zoukankan      html  css  js  c++  java
  • jquery ui的css设计

    jquery ui 是当前最强大的UI库之一,其两大卖点是对IE6的良好支持与换肤功能。为了构建avalon ui,今天起我将投入一部分精力来研究时下最流行的几个CSS框架。它是首当其冲。

    jquery ui的CSS并没有打包一个文件,用户只要引入 jquery.ui.all.css,它就会将所有CSS文件通过@import语句引进来。单从@import来,它比JS高明多了,时至今天,JS的加载都需要我们来实现。

    jquery.ui.all.css 的内容很简单:

    /*!
     * jQuery UI CSS Framework @VERSION
     * http://jqueryui.com
     *
     * Copyright 2013 jQuery Foundation and other contributors
     * Released under the MIT license.
     * http://jquery.org/license
     *
     * http://api.jqueryui.com/category/theming/
     */
    @import "jquery.ui.base.css";
    @import "jquery.ui.theme.css";
    

    jquery.ui.base.css的内容也很简单,与上面一样,尽是@import语句

    
    /*!
     * jQuery UI CSS Framework @VERSION
     * http://jqueryui.com
     *
     * Copyright 2013 jQuery Foundation and other contributors
     * Released under the MIT license.
     * http://jquery.org/license
     *
     * http://api.jqueryui.com/category/theming/
     */
    @import url("jquery.ui.core.css");
    
    @import url("jquery.ui.accordion.css");
    @import url("jquery.ui.autocomplete.css");
    @import url("jquery.ui.button.css");
    @import url("jquery.ui.datepicker.css");
    @import url("jquery.ui.dialog.css");
    @import url("jquery.ui.menu.css");
    @import url("jquery.ui.progressbar.css");
    @import url("jquery.ui.resizable.css");
    @import url("jquery.ui.selectable.css");
    @import url("jquery.ui.slider.css");
    @import url("jquery.ui.spinner.css");
    @import url("jquery.ui.tabs.css");
    @import url("jquery.ui.tooltip.css");
    

    jquery.ui.core.css与我预想的不一样,不做任何reset操作,也不提供什么分栏布局。可能考虑到用户已经引入自己的reset 吧。这里只有极少数的工具类,比如隐藏,清除浮动,将文本从容器中移出视野外……

    
    /* Layout helpers
    ----------------------------------*/
    .ui-helper-hidden {/* 隐藏*/
    	display: none;
    }
    .ui-helper-hidden-accessible {
    	border: 0;
    	clip: rect(0 0 0 0);
    	height: 1px;
    	margin: -1px;
    	overflow: hidden;
    	padding: 0;
    	position: absolute;
    	 1px;
    }
    .ui-helper-reset {
    	margin: 0;
    	padding: 0;
    	border: 0;
    	outline: 0;
    	line-height: 1.3;
    	text-decoration: none;
    	font-size: 100%;
    	list-style: none;
    }
    .ui-helper-clearfix:before,/*不添加多余标签实现清除浮动*/
    .ui-helper-clearfix:after {
    	content: "";
    	display: table;
    	border-collapse: collapse;
    }
    .ui-helper-clearfix:after {
    	clear: both;
    }
    .ui-helper-clearfix {
    	min-height: 0; /* support: IE7 */
    }
    .ui-helper-zfix {
    	 100%;
    	height: 100%;
    	top: 0;
    	left: 0;
    	position: absolute;
    	opacity: 0;
    	filter:Alpha(Opacity=0);
    }
    
    .ui-front {
    	z-index: 100;
    }
    
    
    /* Interaction Cues
    ----------------------------------*/
    .ui-state-disabled {/*不可用*/
    	cursor: default !important;
    }
    
    
    /* Icons
    ----------------------------------*/
    
    /* states and images */
    .ui-icon { /* 让ICON所在的标签的文本移出视野外 */
    	display: block;
    	text-indent: -99999px;
    	overflow: hidden;
    	background-repeat: no-repeat;
    }
    
    
    /* Misc visuals
    ----------------------------------*/
    
    /* Overlays */
    .ui-widget-overlay {
    	position: fixed;
    	top: 0;
    	left: 0;
    	 100%;
    	height: 100%;
    }
    

    接着我们拿一个控件的CSS分析下吧

    /* 每一个UI都有一个容器, 此容器必有这样的类名, “ui-”加UI名*/
    .ui-slider {
    	position: relative;
    	text-align: left;
    }
    .ui-slider .ui-slider-handle {
    	position: absolute;
    	z-index: 2;
    	 1.2em;
    	height: 1.2em;
    	cursor: default;
    }
    .ui-slider .ui-slider-range {
    	position: absolute;
    	z-index: 1;
    	font-size: .7em;
    	display: block;
    	border: 0;
    	background-position: 0 0;
    }
    
    /* For IE8 - See #6727 */
    .ui-slider.ui-state-disabled .ui-slider-handle,
    .ui-slider.ui-state-disabled .ui-slider-range {
    	filter: inherit;
    }
    
    .ui-slider-horizontal {
    	height: .8em;
    }
    .ui-slider-horizontal .ui-slider-handle {
    	top: -.3em;
    	margin-left: -.6em;
    }
    .ui-slider-horizontal .ui-slider-range {
    	top: 0;
    	height: 100%;
    }
    .ui-slider-horizontal .ui-slider-range-min {
    	left: 0;
    }
    .ui-slider-horizontal .ui-slider-range-max {
    	right: 0;
    }
    
    .ui-slider-vertical {
    	 .8em;
    	height: 100px;
    }
    .ui-slider-vertical .ui-slider-handle {
    	left: -.3em;
    	margin-left: 0;
    	margin-bottom: -.6em;
    }
    .ui-slider-vertical .ui-slider-range {
    	left: 0;
    	 100%;
    }
    .ui-slider-vertical .ui-slider-range-min {
    	bottom: 0;
    }
    .ui-slider-vertical .ui-slider-range-max {
    	top: 0;
    }
    

    为了适应用户的字体设置,它基本上不使用px。在这个文件中,它不涉及任何颜色长宽的设置。

    换肤功能的实现在jquery.ui.theme.css,想换肤,将此文件替换就行。这里的类名都是以ui-widget-xxx, ui-state-xxx, ui-icon-xxx, ui-corner-xxx命名。主要处理文本颜色,文本缩进,背景颜色,背景图片,透明度与圆角。

    
    /* Component containers
    ----------------------------------*/
    .ui-widget {
    	font-family: Verdana,Arial,sans-serif/*{ffDefault}*/;
    	font-size: 1.1em/*{fsDefault}*/;
    }
    .ui-widget .ui-widget {
    	font-size: 1em;
    }
    .ui-widget input,
    .ui-widget select,
    .ui-widget textarea,
    .ui-widget button {
    	font-family: Verdana,Arial,sans-serif/*{ffDefault}*/;
    	font-size: 1em;
    }
    .ui-widget-content {
    	border: 1px solid #aaaaaa/*{borderColorContent}*/;
    	background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/;
    	color: #222222/*{fcContent}*/;
    }
    .ui-widget-content a {
    	color: #222222/*{fcContent}*/;
    }
    .ui-widget-header {
    	border: 1px solid #aaaaaa/*{borderColorHeader}*/;
    	background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/;
    	color: #222222/*{fcHeader}*/;
    	font-weight: bold;
    }
    .ui-widget-header a {
    	color: #222222/*{fcHeader}*/;
    }
    
    /* Interaction states
    ----------------------------------*/
    .ui-state-default,
    .ui-widget-content .ui-state-default,
    .ui-widget-header .ui-state-default {
    	border: 1px solid #d3d3d3/*{borderColorDefault}*/;
    	background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/;
    	font-weight: normal/*{fwDefault}*/;
    	color: #555555/*{fcDefault}*/;
    }
    .ui-state-default a,
    .ui-state-default a:link,
    .ui-state-default a:visited {
    	color: #555555/*{fcDefault}*/;
    	text-decoration: none;
    }
    .ui-state-hover,
    .ui-widget-content .ui-state-hover,
    .ui-widget-header .ui-state-hover,
    .ui-state-focus,
    .ui-widget-content .ui-state-focus,
    .ui-widget-header .ui-state-focus {
    	border: 1px solid #999999/*{borderColorHover}*/;
    	background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/;
    	font-weight: normal/*{fwDefault}*/;
    	color: #212121/*{fcHover}*/;
    }
    .ui-state-hover a,
    .ui-state-hover a:hover,
    .ui-state-hover a:link,
    .ui-state-hover a:visited {
    	color: #212121/*{fcHover}*/;
    	text-decoration: none;
    }
    .ui-state-active,
    .ui-widget-content .ui-state-active,
    .ui-widget-header .ui-state-active {
    	border: 1px solid #aaaaaa/*{borderColorActive}*/;
    	background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/;
    	font-weight: normal/*{fwDefault}*/;
    	color: #212121/*{fcActive}*/;
    }
    .ui-state-active a,
    .ui-state-active a:link,
    .ui-state-active a:visited {
    	color: #212121/*{fcActive}*/;
    	text-decoration: none;
    }
    
    /* Interaction Cues
    ----------------------------------*/
    .ui-state-highlight,
    .ui-widget-content .ui-state-highlight,
    .ui-widget-header .ui-state-highlight {
    	border: 1px solid #fcefa1/*{borderColorHighlight}*/;
    	background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/;
    	color: #363636/*{fcHighlight}*/;
    }
    .ui-state-highlight a,
    .ui-widget-content .ui-state-highlight a,
    .ui-widget-header .ui-state-highlight a {
    	color: #363636/*{fcHighlight}*/;
    }
    .ui-state-error,
    .ui-widget-content .ui-state-error,
    .ui-widget-header .ui-state-error {
    	border: 1px solid #cd0a0a/*{borderColorError}*/;
    	background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/;
    	color: #cd0a0a/*{fcError}*/;
    }
    .ui-state-error a,
    .ui-widget-content .ui-state-error a,
    .ui-widget-header .ui-state-error a {
    	color: #cd0a0a/*{fcError}*/;
    }
    .ui-state-error-text,
    .ui-widget-content .ui-state-error-text,
    .ui-widget-header .ui-state-error-text {
    	color: #cd0a0a/*{fcError}*/;
    }
    .ui-priority-primary,
    .ui-widget-content .ui-priority-primary,
    .ui-widget-header .ui-priority-primary {
    	font-weight: bold;
    }
    .ui-priority-secondary,
    .ui-widget-content .ui-priority-secondary,
    .ui-widget-header .ui-priority-secondary {
    	opacity: .7;
    	filter:Alpha(Opacity=70);
    	font-weight: normal;
    }
    .ui-state-disabled,
    .ui-widget-content .ui-state-disabled,
    .ui-widget-header .ui-state-disabled {
    	opacity: .35;
    	filter:Alpha(Opacity=35);
    	background-image: none;
    }
    .ui-state-disabled .ui-icon {
    	filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
    }
    
    /* Icons
    ----------------------------------*/
    
    /* states and images */
    .ui-icon {
    	 16px;
    	height: 16px;
    }
    .ui-icon,
    .ui-widget-content .ui-icon {
    	background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/;
    }
    .ui-widget-header .ui-icon {
    	background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/;
    }
    .ui-state-default .ui-icon {
    	background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/;
    }
    .ui-state-hover .ui-icon,
    .ui-state-focus .ui-icon {
    	background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/;
    }
    .ui-state-active .ui-icon {
    	background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/;
    }
    .ui-state-highlight .ui-icon {
    	background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/;
    }
    .ui-state-error .ui-icon,
    .ui-state-error-text .ui-icon {
    	background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/;
    }
    
    /* positioning */
    .ui-icon-blank { background-position: 16px 16px; }
    .ui-icon-carat-1-n { background-position: 0 0; }
    .ui-icon-carat-1-ne { background-position: -16px 0; }
    /* 略,这里都是ICON,通过background-position来处理背景图片*/
    .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
    
    
    /* Misc visuals
    ----------------------------------*/
    
    /* Corner radius */
    .ui-corner-all,
    .ui-corner-top,
    .ui-corner-left,
    .ui-corner-tl {
    	border-top-left-radius: 4px/*{cornerRadius}*/;
    }
    .ui-corner-all,
    .ui-corner-top,
    .ui-corner-right,
    .ui-corner-tr {
    	border-top-right-radius: 4px/*{cornerRadius}*/;
    }
    .ui-corner-all,
    .ui-corner-bottom,
    .ui-corner-left,
    .ui-corner-bl {
    	border-bottom-left-radius: 4px/*{cornerRadius}*/;
    }
    .ui-corner-all,
    .ui-corner-bottom,
    .ui-corner-right,
    .ui-corner-br {
    	border-bottom-right-radius: 4px/*{cornerRadius}*/;
    }
    
    /* Overlays */
    .ui-widget-overlay {
    	background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/;
    	opacity: .3/*{opacityOverlay}*/;
    	filter: Alpha(Opacity=30)/*{opacityFilterOverlay}*/;
    }
    .ui-widget-shadow {
    	margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/;
    	padding: 8px/*{thicknessShadow}*/;
    	background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/;
    	opacity: .3/*{opacityShadow}*/;
    	filter: Alpha(Opacity=30)/*{opacityFilterShadow}*/;
    	border-radius: 8px/*{cornerRadiusShadow}*/;
    }
    

    over!

  • 相关阅读:
    beta冲刺5
    beta冲刺4
    beta冲刺3
    beta冲刺2
    [LeetCode] 10. Regular Expression Matching(正则匹配)
    [LeetCode] 32. Longest Valid Parentheses(最长合法括号对)
    [LeetCode] 4. Median of Two Sorted Arrays.(两个有序数组的中位数)
    [LeetCode] 45. Jump Game Ⅱ(跳跃游戏之二)
    [LeetCode] 41. First Missing Positive(第一个缺失的正数)
    [LeetCode] 124. Binary Tree Maximum Path Sum(二叉树的最大路径和)
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/3149831.html
Copyright © 2011-2022 走看看