CSS3屬性的兼容 什麼是彈性和佈局

CSS3新特性,兼容性,兼容方法總結

 

css3手冊css3手冊css

邊框

border-radius

用於添加圓角效果html

語法:

border-radius:[ <length> | <percentage> ]{1,4} [ / [ <length> | <percentage> ]{1,4} ]?
<length>:用長度值設置對象的圓角半徑長度。不容許負值
<percentage>:用百分比設置對象的圓角半徑長度。不容許負值前端

實例:

border-radius:10px;css3

 

border-radius:5px 10px 15px 20px; //順序是順時針
 

border-radius:26px 106px 162px 32px/28px 80px 178px 26px; //標準語法格式
 

 

border-radius:50%; //是相對於元素佔據尺寸的百分比,即包含邊框和padding後的尺寸git

 

 

.radius{
    border-top-left-radius:5px;      //左上角,注意順序是先上下後左右
    border-top-right-radius:10px;    //左上角
    border-bottom-left-radius:15px;  //左下角
    border-bottom-left-radius:20px;  //右上角
    background-color:red;  //即便元素沒有邊框,圓角也能夠用到 background 上面,具體效果受 background-clip 影響。
}
 
兼容性:

IE9+,Firefox4+,Chrome5+,Safari5+,Opera01.5+,iOS Safari4+,Android Browser2.2+ ,Android Chrome18+web

兼容方法:

低版本的chrome:-webkit-border-radius:10px;
低版本的firefox:-moz-border-radius:10px;
IE6/7/8:引入ie-css3兼容文件,不支持除了黑色(#000)之外的其餘顏色
詳情參閱讓IE6/IE7/IE8瀏覽器支持CSS3屬性
詳情參閱border-radius正則表達式

box-shadow

用於添加陰影效果chrome

語法:

box-shadow:none|[inset? && [<offset-x><offset-y><blur-radius>?<spread-radius>?<color>?]]#
inset:設置對象的陰影類型爲內陰影。該值爲空時,則對象的陰影類型爲外陰影
<offset-x>: 這是第一個 length值設置水平偏移量,若是是負值則陰影位於元素左邊。
<offset-y>: 這是第二個 length值設置垂直偏移量,若是是負值則陰影位於元素上面。
<blur-radius>:這是第三個 length值。值越大,糊糊面積越大,陰影就越大越淡。 不能爲負值。默認爲0,此時陰影邊緣銳利。
<color>:設置對象的陰影的顏色。django

實例:

box-shadow: 10px 10px 5px #888;編程

 

box-shadow: 3px 3px green, -1em 0 0.4em gold;
 

 

兼容性:

IE9.0+,Firefox4.0+,Chrome10.0+,Safari5.1+,Opera10.5+,iOS Safari5.0+,Android Browser4.0+,Android Chrome18.0+

兼容方法:

低版本的chrome:-webkit-box-shadow:10px 10px 5px #888;
低版本的firefox:-moz-box-shadow:10px 10px 5px #888;
IE6/7/8:

  • 方法一:

    filter:progid:dXImageTransform.Microsoft.DropShadow(color=#888888,offX=10,offY=10,positives=true);
    缺點:陰影不能邊緣模糊
  • 方法二:

    filter:progid:DXImageTransform.Microsoft.Shadow(color='#0099ff', Direction='120', Strength='10');
    相似於投影效果,缺點:陰影不能邊緣模糊
  • 方法三(推薦)、引入ie-css3兼容文件behavior:url(ie-css3.htc)
    缺點:不支持除了黑色(#000)之外的其餘顏色
    詳情參閱讓IE6/IE7/IE8瀏覽器支持CSS3屬性
    詳情參閱box-shadow

border-image

用來給元素邊框添加背景圖片

語法:
border-image:<' border-image-source '> || <' border-image-slice '> [ / <' border-image-width '> | 
/ <' border-image-width '>? / <' border-image-outset '> ]? || <' border-image-repeat '>

<' border-image-source '>:設置或檢索對象的邊框是否用圖像定義樣式或圖像來源路徑。
<' border-image-slice '>: 設置或檢索對象的邊框背景圖的分割方式,該屬性指定從上,右,下,左方位來分隔圖像,將圖像分紅4個角,4條邊和中間區域共9份,中間區域始終是透明的(即沒圖像填充),除非加上關鍵字 fill。
<' border-image-width '>: 設置或檢索對象的邊框厚度。
<' border-image-outset '>:設置或檢索對象的邊框圖像可超出邊框盒的大小。
<' border-image-repeat '>:設置或檢索對象的邊框圖像的平鋪方式repeat,round,stretch。

實例:

border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 round;

 

border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
 

 

兼容性:

IE11+, Firefox15+, Chrome16+ , Safari6+,Opera15+,iOS Safari6+,Android Browser4.4+, Android Chrome18+

兼容方法:

低版本的chrome:-webkit-border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
低版本的firefox:-moz-border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
低版本的Opera:-o-border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
IE未解決
詳情參閱border-image,border-image

背景

background-size

設置背景圖片大小。

語法:

background-size:<bg-size>#
<bg-size> = [ <length> | <percentage> | auto ]{1,2} | cover | contain
<length>:用長度值指定背景圖像大小。不容許負值。
<percentage>:用百分比指定背景圖像大小。不容許負值。
auto:背景圖像的真實大小。
cover:將背景圖像等比縮放到徹底覆蓋容器,背景圖像有可能超出容器。
contain:將背景圖像等比縮放到寬度或高度與容器的寬度或高度相等,背景圖像始終被包含在容器內

實例:

background-size: cover;

 

background-size: contain;
 

 

兼容性:

IE9+,Firefox4+, Chrome15+,Safari7+, Opera15+, iOS Safari7+, Android Browser4.4+, Android Chrome18+

兼容方法:

低版本的chrome:-webkit-background-size:10px 10px 5px #888; //不支持background簡寫
低版本的firefox:-moz-background-size:10px 10px 5px #888;
IE8:

  • 方法一(推薦)、引入backgroundsize.min.htc兼容文件

    .size {
    width: 400px;
    height: 400px;
    margin: 20px auto 0;
    background:  green url(img/1.jpg) no-repeat scroll center 0;
    background-size: cover;
    -ms-behavior: url(js/backgroundsize.min.htc);
    }
  • 方法2、針對IE8的hack

    <!--[if IE 8]> <style type="text/css"> .size{ -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/1.jpg', sizingMethod='scale')"; }  //該函數只能模仿cover值,IE8下效果與IE9/10稍有不一樣,圖片佔滿背景大小且不超出 </style><![endif]-->

    詳情參閱background-size

background-origin

指定背景圖片background-image 屬性的原點位置的背景相對區域,當使用 background-attachment 爲fixed時,該屬性將被忽略不起做用

語法:

background-origin:<box>#
<box> = border-box | padding-box | content-box
padding-box:從padding區域(含padding)開始顯示背景圖像。
border-box: 從border區域(含border)開始顯示背景圖像。
content-box:從content區域開始顯示背景圖像

實例:

background-origin:content-box;padding:10px;

111111111111111111111111111

background-origin:border-box;padding:10px;border:15px solid transparent;
111111111111111111

 

兼容性:

IE9+,Firefox4.0+ Chrome4.0+ Safari6.0+, iOS Safari6.0+, Android Browser3.0+, Android Chrome18+

兼容方法:

firefox4.0如下:-moz-background-origin:padding | border; //沒有content
IE8下background-origin默認爲padding-box

詳情參閱background-origin

background-clip

設置元素的背景(背景圖片或顏色)是否延伸到邊框下面。

語法:

background-clip:<box>#
<box> = border-box | padding-box | content-box | inherit
border-box背景延伸到邊框外沿(可是在邊框之下)。
padding-box邊框下面沒有背景,即背景延伸到內邊距外沿。
content-box背景裁剪到內容區 (content-box) 外沿。

實例:

background-clip:border-box;

111111111111111

 

兼容性:

IE9+,Firefox4.0+, Chrome4.0+, Safari6.0+,iOS Safari6.0+, Android Browser3.0+, Android Chrome18.0+

兼容方法:

firefox4.0如下:-moz-background-clip:padding | border; //沒有content
IE8下background-clip默認爲padding-box

multiple backgrounds

語法:
background:[<bg-layer>,]*<final-bg-layer><bg-layer>=<bg-image>||<position>[/<bg-size>]?||<repeat-style>||<attachment>||<box>||<box><final-bg-layer>=<bg-image>||<position>[/<bg-size>]?||<repeat-style>||<attachment>||<box>||<box>||<'background-color'>
實例:
background:
    url(test1.jpg) no-repeat scroll 10px 20px/50px 60px padding-box,
    url(test1.jpg) no-repeat scroll 10px 20px/70px 90px padding-box,
    url(test1.jpg) no-repeat scroll 10px 20px/110px 130px padding-box #aaa;
兼容性:

IE9+,Firefox3.6+, Chrome4.0+, Safari3.1+

兼容方法:

未解決

文本

text-shadow

爲文字添加陰影

語法:

textshadow:none | [inset? && [ <offset-x> <offset-y> <blur-radius>?<color>? ] ]#
inset:設置對象的陰影類型爲內陰影。該值爲空時,則對象的陰影類型爲外陰影
<offset-x>: 這是第一個 length值設置水平偏移量,若是是負值則陰影位於元素左邊。
<offset-y>: 這是第二個 length值設置垂直偏移量,若是是負值則陰影位於元素上面。
<blur-radius>:這是第三個 length值。值越大,糊糊面積越大,陰影就越大越淡。 不能爲負值。默認爲0,此時陰影邊緣銳利。
<color>:設置對象的陰影的顏色。

實例:

text-shadow:1px 1px 2px red;

12212121

 

兼容性:

IE10+, Firefox3.5+, Chrome4.0+, Safari6.0+

兼容方法:

低版本的chrome:-webkit-text-shadow:1px 1px 1px #000;
低版本的firefox:-moz-text-shadow:1px 1px 1px #000;
IE6/7/8:

  • 方法1、引入ie-css3兼容文件behavior:url(ie-css3.htc);
  • 方法2、 filter:shadow(color=blue,direction=225),direction表示投影角度

詳情參閱讓IE6/IE7/IE8瀏覽器支持CSS3屬性

word-wrap

瀏覽器是否容許單詞中斷換行
word-wrap 屬性本來屬於微軟的一個私有屬性,在 CSS3 如今的文本規範草案中已經被重名爲 overflow-wrap
當你使用 <' overflow-wrap '> 時,最好同時使用 <' word-wrap '> 做爲備選,做向前兼容。

語法:

word-wrap:normal | break-word

實例:

word-wrap: break-word;

FStrPrivFinÄndG (Gesetz zur Änderung des Fernstraßenbauprivatfinanzierungsgesetzes und straßenverkehrsrechtlicher Vorschriften)

 

兼容性:

IE6+,Firefox3.5+, Chrome4+, Safari6+, iOS Safari6+, Android Browser2.1+, Android Chrome18+

兼容方法:

現代瀏覽器幾乎都支持

文字

@font-face

可以加載服務器端的字體文件,讓客戶端顯示客戶端所沒有安裝的字體。

語法:
@font-face {
    font-family: <YourWebFontName>;
    src: <source> [<format>][,<source> [<format>]]*;
    [font-weight: <weight>];
    [font-style: <style>];
}
實例:
@font-face {
    font-family: 'YourWebFontName';
    src: url('YourWebFontName.eot'); /* IE9 Compat Modes */
    src: url('YourWebFontName.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
         url('YourWebFontName.woff') format('woff'), /* Modern Browsers */
         url('YourWebFontName.ttf')  format('truetype'), /* Safari, Android, iOS */
         url('YourWebFontName.svg#YourWebFontName') format('svg'); /* Legacy iOS */
    font-weight: normal;
    font-style: normal;
}
兼容性:

幾乎全部瀏覽器支持網絡字體@font-face的用法

兼容方法:

詳情參閱@font-face

2D3D轉換

transform

元素能夠按照設定的值變形、旋轉、縮放、傾斜

語法:

transform : none | <transform-function> [ <transform-function> ]*
transform-function list:

  • matrix() = matrix(<number>[,<number>]{5,5})
  • matrix3d() = matrix3d(<number>[,<number>]{15,15})
  • translate() = translate(<translation-value>[,<translation-value>]?)
  • translate3d() = translate3d(<translation-value>,<translation-value>,<length>)
  • translatex() = translatex(<translation-value>)
  • translatey() = translatey(<translation-value>)
  • translatez() = translatez(<length>)
  • rotate() = rotate(<angle>)
  • rotate3d() = rotate3d(<number>,<number>,<number>,<angle>)
  • rotatex() = rotatex(<angle>)
  • rotatey() = rotatey(<angle>)
  • rotatez() = rotatez(<angle>)
  • scale() = scale(<number>[,<number>]?)
  • scale3d() = scale3d(<number>,<number>,<number>)
  • scalex() = scalex(<number>)
  • scaley() = scaley(<number>)
  • scalez() = scalez(<number>)
  • skew() = skew(<angle>[,<angle>]?)
  • skewx() = skewx(<angle>)
  • skewy() = skewy(<angle>)
  • perspective() = perspective(<length>)
  • <translation-value> = <length> | <percentage>

    實例:

    transform:none;

     

    transform:rotate(30deg) scale(0.5);//你們記住了是空格隔開
     

    transform:skew(45deg);
     

    transform:translate(100px 20px);
     

     

兼容性:

IE9+, Firefox3.5+, Chrome4.0+, Safari6.0+, iOS Safari8.4+, Android Browser4.4+, Android Chrome34+

兼容方法:
.transform{
    -webkit-transform: x,y;
    -moz-transform: x,y;
    -ms-transform: x,y;
    -o-transform: x,y;
    transform: x,y;
}

IE8及如下:用IE濾鏡

{
    filter:fliph;//水平翻轉至關於transform:rotateY(180deg)
    filter:flipv;//垂直翻轉至關於transform:rotateX(180deg)
}

詳情參閱transform

過渡

transition

css的屬性值在必定的時間區間內平滑地過渡

語法:
transition :[<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]*

transition-property : none | all | [ <ident> ] [, <ident> ]*檢索或設置對象中的參與過渡的屬性
transition-duration : <time> [, <time>]*檢索或設置對象過渡的持續時間

transition-timing-function :ease | linear | ease-in | ease-out | ease-in-out | step-start 
| step-end | steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)
[,ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps(<integer>[, 
[ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)]*

檢索或設置對象中過渡的動畫類型

transition-delay : <time> [, <time>]* 檢索或設置對象延遲過渡的時間

實例:

transition: all .5s ease-in-out 1s;

 

 

兼容性:

IE10+, Firefox16+, Chrome26+ ,Safari6.1+ , iOS Safari7+, Android Browser4.4+, Android Chrome25+

兼容方法:
p {
  -webkit-transition: all .5s ease-in-out 1s;
  -moz-transition: all .5s ease-in-out 1s;
  -o-transition: all .5s ease-in-out 1s;
  transition: all .5s ease-in-out 1s;
}

IE9以及更早的版本,不支持 transition 屬性。
詳情參閱transition

動畫

animation

檢索或設置對象所應用的動畫特效。

語法:

animation:<single-animation>[,<single-animation>]*

<single-animation> = <single-animation-name> || <time> || <single-animation-timing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state>

<' animation-name '>:檢索或設置對象所應用的動畫名稱
<' animation-duration '>:檢索或設置對象動畫的持續時間
<' animation-timing-function '>:檢索或設置對象動畫的過渡類型
<' animation-delay '>:檢索或設置對象動畫延遲的時間
<' animation-iteration-count '>:檢索或設置對象動畫的循環次數
<' animation-direction '>:檢索或設置對象動畫在循環中是否反向運動
<' animation-fill-mode '>:檢索或設置對象動畫時間以外的狀態
<' animation-play-state '>:檢索或設置對象動畫的狀態。

實例:
.animation:hover{
    -webkit-animation:animated_div 5s 1;
    -moz-animation:animated_div 5s 1;
    animation:animated_div 5s 1;
}
@keyframes animated_div{
    0%      {transform: rotate(0deg);left:0px;}
    25%     {transform: rotate(20deg);left:0px;}
    50%     {transform: rotate(0deg);left:500px;}
    55%     {transform: rotate(0deg);left:500px;}
    70%     {transform: rotate(0deg);left:500px;background:#1ec7e6;}
    100%    {transform: rotate(-360deg);left:0px;}
}
 
兼容性:

IE10+,Firefox16+, Chrome43+, Safari9+

兼容方法:

低版本的chrome:-webkit-
低版本的firefox:-moz-
IE9及如下不支持
詳情參閱animation

@keyframes

用於建立動畫

語法:
@keyframes IDENT {
      0% {
         Properties:Properties value;
      }
      Percentage {
         Properties:Properties value;
      }
      100% {
         Properties:Properties value;
      }
}
實例:

見上例

兼容性:

IE10+,Firefox16+, Chrome43+, Safari9+

兼容方法:

低版本的chrome:-webkit-
低版本的firefox:-moz-
IE9及如下不支持
詳情參閱animation

顏色

linear-gradient radial-gradient

實現真實的漸變效果。

語法:

<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)
<side-or-corner> = [left | right] || [top | bottom]
<color-stop> = <color> [ <length> | <percentage> ]?
<angle>:用角度值指定漸變的方向(或角度)。
<color-stop> 用於指定漸變的起止顏色:

實例:

background:linear-gradient(to bottom, #fff 0%, red 100%);

 

background:radial-gradient(#fff 0%, red 100%);
 

 

兼容性:

IE10+, Firefox16+, Chrome26+, Safari6.1+

兼容方法:

低版本的chrome:-webkit-
低版本的firefox:-moz-
IE9及如下可以使用 IE 濾鏡處理:

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000',endColorstr='#ffffff');

詳情參閱gradient

rgba(r,g,b,a)

設置顏色red+green+blue+alpha

語法:

rgba(r,g,b,alpha)

實例:

rgba(255,0,0,.2)

 

 

兼容性:

IE9+, Firefox2+, Chrome4+, Safari3+, iOS Safari3.2+, Android Browser2.1+, Android Chrome18+

兼容方法:

IE6/7/8不支持使用 rgba 模式實現透明度,可以使用 IE 濾鏡處理

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fff0000,endColorstr=#7fff0000);

使用後咱們又發現了個小問題,IE9下顏色更深一點,仔細研究發如今IE9下rgba顏色和IE濾鏡都能被識別,因此被覆蓋了顏色就更深一點
解決辦法:

.demo{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fff0000,endColorstr=#7fff0000);}
:root .demo{filter:none;background-color:rgba(255,0,0,.2);}//IE8及如下不識別

詳情參閱IE8下兼容rgba顏色的半透明背景

flex佈局

Flex元素是可讓你的佈局根據瀏覽器的大小變化進行自動伸縮。

flex

設置或檢索彈性盒模型對象的子元素如何分配空間。用在子容器上

語法:

flex:none | <' flex-grow '> <' flex-shrink >'? || <' flex-basis '>
默認值爲0 1 auto,建議優先使用這個屬性,而不是單獨寫三個分離的屬性,由於瀏覽器會推算相關值。
flex-grow:<number>設置或檢索彈性盒的擴展比率。
默認爲0,若是全部子容器的flex-grow屬性都爲1,則它們將等分剩餘空間(若是有的話)。若是一個子容器的flex-grow屬性爲2,其餘都爲1,則前者佔據的剩餘空間將比其餘項多一倍。
flex-shrink:<number>設置或檢索彈性盒的收縮比率。
若是全部子容器的flex-shrink屬性都爲1,當空間不足時,都將等比例縮小。若是一個子容器的flex-shrink屬性爲0,其餘子容器都爲1,則空間不足時,前者不縮小。
flex-basis:<length> | <percentage> | auto | content
定義了在分配多餘空間以前,子容器佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的默認值爲auto,即子容器的原本大小。

實例:
.parent{ 
    display:-webkit-flex;  //低版本的chrome
    display:-moz-box;      //低版本的firefox
    display:-ms-flexbox;   //IE10
    display:flex; 
    width:600px; height:100px;border:1px solid #000; 
}
.parent div{
    -webkit-flex:1;
    -moz-box-flex:1;
    -ms-flex:1;
    flex:1;
    border:1px solid red;
}
children1
children2
children3
兼容性:

IE11+,Firefox22+, Chrome21+, Safari6.1+

兼容方法:

低版本的chrome:-webkit- 或者 -webkit-box-flex
低版本的firefox:-moz-box-flex:1;
IE10:-ms-flex:1;
box-flex效果相似於過渡版本和新版本的flex屬性;
詳情參閱flex

flex-flow

設置或檢索彈性盒模型對象的子元素排列方式。用在父容器上

語法:

flex-flow:<' flex-direction '> || <' flex-wrap '>
<' flex-direction '>:定義彈性盒子元素的排列方向。
flex-direction:row | row-reverse | column | column-reverse

  • row:主軸與行內軸方向做爲默認的書寫模式。即橫向從左到右排列(左對齊)。
  • row-reverse:對齊方式與row相反。
  • column:主軸與塊軸方向做爲默認的書寫模式。即縱向從上往下排列(頂對齊)。
  • column-reverse:對齊方式與column相反。

<' flex-wrap '>控制flex容器是單行或者多行.flex-wrap:nowrap | wrap | wrap-reverse

  • nowrap:flex容器爲單行。該狀況下flex子項可能會溢出容器
  • wrap:flex容器爲多行。該狀況下flex子項溢出的部分會被放置到新行,子項內部會發生斷行
  • wrap-reverse:反轉 wrap 排列。
實例:
flex-flow:row nowrap
  • a
  • b
  • c
flex-flow:row wrap-reverse
  • a
  • b
  • c
flex-flow:column wrap-reverse;
  • a
  • b
  • c
兼容性:

IE11+, Firefox28+, Chrome29+, Safari9+

兼容方法:

能夠經過box-orient:horizontal + box-direction:normal 達到新版本 flex-direction:row 的效果;
能夠經過box-orient:horizontal + box-direction:reverse 達到新版本 flex-direction:row-reverse 的效果;
能夠經過box-orient:vertical + box-direction:normal 達到新版本 flex-direction:column 的效果;
能夠經過box-orient:horizontal + box-direction:reverse 達到新版本 flex-direction:column-reverse 的效果;
box-lines效果相似於過渡版本和新版本的flex-wrap屬性

justify-content

設置或檢索彈性盒子元素在主軸(橫軸)方向上的定位方式。

語法:

justify-content:flex-start | flex-end | center | space-between | space-around

  • flex-start(默認值):左對齊
  • flex-end:右對齊
  • center: 居中
  • space-between:兩端對齊,項目之間的間隔都相等。
  • space-around:每一個子元素兩側的間隔相等。因此,子元素之間的間隔比子元素與邊框的間隔大一倍
實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

詳情參閱justify-content

align-content

調整伸縮子元素在側軸(縱軸)上的定位方式,若是子元素只有一根軸線,該屬性不起做用

語法:

align-content:flex-start | flex-end | center | space-between | space-around | stretch

  • flex-start:與交叉軸的起點對齊。
  • flex-end:與交叉軸的終點對齊。
  • center:與交叉軸的中點對齊。
  • space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
  • space-around:每根軸線兩側的間隔都相等。因此,軸線之間的間隔比軸線與邊框的間隔大一倍。
  • stretch(默認值):軸線佔滿整個交叉軸。
實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-

box-pack效果等同於過渡版本的flex-pack屬性和新版本的justify-content屬性;

詳情參閱align-content

align-items

定義flex子項在flex容器的當前行的側軸(縱軸)方向上的定位方式。

語法:

align-items:flex-start | flex-end | center | baseline | stretch

  • flex-start:交叉軸的起點對齊。
  • flex-end:交叉軸的終點對齊。
  • center:交叉軸的中點對齊。
  • baseline: 項目的第一行文字的基線對齊。
  • stretch(默認值):若是項目未設置高度或設爲auto,將佔滿整個容器的高度。
實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-

box-align效果等同於過渡版本的flex-align屬性和新版本的align-items屬性;

詳情參閱align-items

align-self

定義flex子項單獨在側軸(縱軸)方向上的對齊方式。align-self屬性容許單個項目有與其餘項目不同的對齊方式,可覆蓋align-items屬性。默認值爲auto,表示繼承父元素的align-items屬性,若是沒有父元素,則等同於stretch。

語法:

align-self:auto | flex-start | flex-end | center | baseline | stretch

實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-
詳情參閱align-self

order

設置或檢索彈性盒模型對象的子元素的排列順序。數值越小,排列越靠前,默認爲0。

語法:

order:<integer>默認爲0

實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-

box-oridinal-group效果等同於過渡版本的flex-order屬性和新版本的order屬性;
詳情參閱order

其餘

box-sizing

用來改變默認的 CSS 盒模型 對元素寬高的計算方式

語法:

box-sizing:content-box | border-box
content-box:
padding和border不被包含在定義的width和height以內。對象的實際寬度等於設置的width值和border、padding之和,即 ( Element width = width + border + padding )
border-box:
padding和border被包含在定義的width和height以內。對象的實際寬度就等於設置的width值,即便定義有border和padding也不會改變對象的實際寬度,即 ( Element width = width )

實例:

box-sizing:content-box

 

box-sizing:border-box
 

 

兼容性:

IE8+, Firefox29+, Chrome10+, Safari6+

兼容方法:

詳情參閱box-sizing

resize

設置或檢索對象的區域是否容許用戶縮放,調節元素尺寸大小。多用於textarea元素

語法:

resize:none | both | horizontal | vertical

實例:

resize:none

兼容性:

Firefox Chrome Safari現代版都兼容

兼容方法:

IE全不兼容

什麼是彈性和佈局

CSS3引入了一種新的佈局模式——Flexbox佈局,即伸縮佈局盒模型(Flexible Box),用來提供一個更加有效的方式制定、調整和分佈一個容器裏項目佈局,即便它們的大小是未知或者動態的,這裏簡稱爲Flex

Flexbox佈局經常使用於設計比較複雜的頁面,能夠輕鬆的實現屏幕和瀏覽器窗口大小發生變化時保持元素的相對位置和大小不變,同時減小了依賴於浮動佈局實現元素位置的定義以及重置元素的大小。

Flexbox佈局在定義伸縮項目大小時伸縮容器會預留一些可用空間,讓你能夠調節伸縮項目的相對大小和位置。例如,你能夠確保伸縮容器中的多餘空間平均分配多個伸縮項目,固然,若是你的伸縮容器沒有足夠大的空間放置伸縮項目時,瀏覽器會根據必定的比例減小伸縮項目的大小,使其不溢出伸縮容器。綜合而言,Flexbox佈局功能主要具備如下幾點:

第一,屏幕和瀏覽器窗口大小發生改變也能夠靈活調整佈局;

第二,能夠指定伸縮項目沿着主軸或側軸按比例分配額外空間(伸縮容器額外空間),從而調整伸縮項目的大小;

第三,能夠指定伸縮項目沿着主軸或側軸將伸縮容器額外空間,分配到伸縮項目以前、以後或之間;

第四,能夠指定如何將垂直於元素佈局軸的額外空間分佈到該元素的周圍;

第五,能夠控制元素在頁面上的佈局方向;

第六,能夠按照不一樣於文檔對象模型(DOM)所指定排序方式對屏幕上的元素從新排序。也就是說能夠在瀏覽器渲染中不按照文檔流前後順序重排伸縮項目順序。

Flexbox規範版本衆多,瀏覽器對此語法支持度也各有不一樣,接下來的內容以最新語法版本爲例向你們展現:

1.建立一個flex容器

任何一個flexbox佈局的第一步是須要建立一個flex容器。爲此給元素設置display屬性的值爲flex。在Safari瀏覽器中,你依然須要添加前綴-webkit,

.flexcontainer{ display: -webkit-flex; display: flex; }

2.Flex項目顯示

Flex項目是Flex容器的子元素。他們沿着主要軸和橫軸定位。默認的是沿着水平軸排列一行。你能夠經過flex-direction來改變主軸方向修改成column,其默認值是row。

3.Flex項目列顯示

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: column; flex-direction: column; }

4.Flex項目移動到頂部

如何將flex項目移動到頂部,取決於主軸的方向。若是它是垂直的方向經過align-items設置;若是它是水平的方向經過justify-content設置。

.flexcontainer{ -webkit-flex-direction: column; flex-direction: column; -webkit-justify-content: flex-start; justify-content: flex-start; }

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: row; flex-direction: row; -webkit-align-items: flex-start; align-items: flex-start; }

 

Flexbox規範版本衆多,瀏覽器對此語法支持度也各有不一樣,接下來的內容以最新語法版本爲例向你們展現:(接上一節)

5.Flex項目移到左邊

flex項目稱動到左邊或右邊也取決於主軸的方向。若是flex-direction設置爲row,設置justify-content控制方向;若是設置爲column,設置align-items控制方向。

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: row; flex-direction: row; -webkit-justify-content: flex-start; justify-content: flex-start; }

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: column; flex-direction: column; -webkit-align-items: flex-start; align-items: flex-start; }

6.Flex項目移動右邊

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: row; flex-direction: row; -webkit-justify-content: flex-end; justify-content: flex-end; }

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: column; flex-direction: column; -webkit-align-items: flex-end; align-items: flex-end; }

7.水平垂直居中

在Flexbox容器中製做水平垂直居中是微不足道的。設置justify-content或者align-items爲center。另外根據主軸的方向設置flex-direction爲row或column。

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: row; flex-direction: row; -webkit-align-items: center; align-items: center; -webkit-justify-content: center; justify-content: center; }

.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: column; flex-direction: column; -webkit-align-items: center; align-items: center; -webkit-justify-content: center; justify-content: center; }

8.Flex項目實現自動伸縮

您能夠定義一個flex項目,如何相對於flex容器實現自動的伸縮。須要給每一個flex項目設置flex屬性設置須要伸縮的值。

.bigitem{ -webkit-flex:200; flex:200; }  .smallitem{ -webkit-flex:100; flex:100; }

 

彈性。佈局。浮動的區別

1、 固定和流動佈局的不一樣點

雖然大多數設計者和開發人員認爲固定和流動佈局的定義很基礎,但爲了更爲清晰,再複習一遍。

固定寬度佈局(Fixed Layout)

這種佈局有一個設置了固定寬度的外包裹,裏面的各個模塊也是固定寬度而非百分比。重要的是容器(外包裹)元素是設置爲不能移動的。不管訪問者屏幕的分辨率是多少,網頁都顯示爲和其它訪問者相同的寬度。

上圖展現的是一個固定寬度佈局的基本輪廓。裏面的三列分別是520,200和200px寬度。960px已經成爲現代web設計的標準,由於大多數站點用戶被假定爲使用1024×768分略率。

流動/流體佈局(Fluid/Liquid Layout)

流體佈局,也被成爲流體佈局,主體部分都是用了百分比寬度,所以能夠自適應用戶的分辨率。

上圖是一個簡單流動(流體)佈局的輪廓。雖然有些設計師可能給流動佈局中某些元素設置了固定寬度,好比margin,只要主體元素是百分比寬度,就可讓佈局自適應適應各類分辨率。

2、固定寬度頁面設計

許多設計者喜歡固定寬度佈局賽過流動佈局,由於它更容易實現,並確保了設計者所見即用戶所見。不過它和流動佈局同樣,具備兩面性。

優勢

固定寬度佈局更容易使用,在設計方面更容易定製。

在全部瀏覽器中寬度同樣,因此不會受到圖片、表單、視頻和其餘固定寬度內容的麻煩。

不須要min-width和max-width,全部瀏覽器都支持。

即便須要兼容800×600這麼小的分辨率,網頁的主體內容仍然有足夠的寬度易於閱讀。

缺點

對於使用高分辨率的用戶,固定寬度佈局會留下很大的空白。所以出現了「黃金比例」,「三分定律」,綜合平衡和其餘設計原則。

屏幕分辨率太小時須要垂直滾動條。

無縫紋理,連續的圖案須要適應更大的分辨率。

固定寬度佈局通常在可用性上得分較低。

固定寬度佈局的例子

5個充分發揮固定寬度佈局的例子。這些站點吸納了多種設計元素。設計師控制了內容區域周圍附加元素的定位,並精確地設置了內容和導航的寬度。

響應式佈局

響應式佈局

  編輯
響應式佈局是Ethan Marcotte在2010年5月份提出的一個概念,簡而言之,就是一個網站可以兼容多個終端——而不是爲每一個終端作一個特定的版本。這個 概念是爲解決移動互聯網瀏覽而誕生的。
響應式 佈局能夠爲不一樣終端的用戶提供更加溫馨的界面和更好的用戶體驗,並且隨着目前大屏幕 移動設備的普及,用「大勢所趨」來形容也不爲過。隨着愈來愈多的設計師採用這個技術,咱們不只看到不少的創新,還看到了一些成形的模式。
 
中文名
響應式佈局
提出時間
2010年5月
英    文
Responsive layout
解    釋
一個網站可以兼容多個 終端
目    的
解決 移動互聯網瀏覽
優    點
面對不一樣分辨率設備靈活性強等

目錄

  1. 1 優勢和缺點
  2. 2 設計思路
 

優勢和缺點

編輯
優勢:[1] 
面對不一樣分辨率設備靈活性強
可以快捷解決多設備顯示適應問題
缺點:[1] 
兼容各類設備工做量大,效率低下
代碼累贅,會出現隱藏無用的元素,加載時間加長
其實這是一種折中性質的設計解決方案,多方面因素影響而達不到最佳效果
必定程度上改變了網站原有的佈局結構,會出現用戶混淆的狀況
 

設計思路

編輯
咱們在上面瞭解了什麼是響應式佈局,那在咱們的實際項目中應該怎麼去設計呢?在以往咱們設計網站的時候都會受到不一樣瀏覽器的兼容性的困擾,還要來個不一樣尺寸設備,咱們該怎麼淡定下來呢?有需求就會有解決方案,說到響應式佈局,就不得不提起CSS3中的Media Query(媒介查詢),這但是個好東西,易用、強大、快捷……Media Query是製做響應式佈局的一個利器,使用這個工具,咱們能夠很是方便快捷的製造出各類豐富的實用性強的界面。接下來就一塊兒來深刻的瞭解Media Query。
一、CSS3中的Media Query(媒介查詢)是什麼?[1] 
經過不一樣的媒介類型和條件定義樣式表規則。媒介查詢讓CSS能夠更精確做用於不一樣的媒介類型和同一媒介的不一樣條件。媒介查詢的大部分媒介特性都接受min和max用於表達」大於或等於」和」小於或等於」。如:width會有min-width和max-width媒介查詢能夠被用在CSS中的@media和@import規則上,也能夠被用在HTML和XML中。經過這個標籤屬性,咱們能夠很方便的在不一樣的設備下實現豐富的界面,特別是移動設備,將會運用更加的普遍。
二、media query可以獲取哪些值?
設備的寬和高device-width,device-height顯示屏幕/觸覺設備。
渲染窗口的寬和高width,height顯示屏幕/觸覺設備。
設備的手持方向,橫向仍是豎向orientation(portrait|lanscape)和打印機等。
畫面比例aspect-ratio點陣打印機等。
設備比例device-aspect-ratio-點陣打印機等。
對象顏色或顏色列表color,color-index顯示屏幕。
設備的分辨率resolution。
三、語法結構及用法
@media 設備名 only (選取條件) not (選取條件) and(設備選取條件),設備二{sRules}
示例一:在link中使用@media:
<link rel=「stylesheet」 type=「text/css」 media=「only screen and (max-width: 480px),only screen and (max-device-width: 480px)」 href=「link.css」/>
上面使用中only可省略,限定於計算機顯示器,第一個條件max-width是指渲染界面最大寬度,第二個條件max-device-width是指設備最大寬度。
示例二:在樣式表中內嵌@media:
@media ( min-device-width:1024px ) and ( max-width:989px ),screen and ( max-device-width:480px ),( max-device-width:480px ) and ( orientation:landscape ),( min-device-width:480px ) and ( max-device-width:1024px ) and ( orientation:portrait ) {srules}
在示例二中,設置了電腦顯示器分辨率(寬度)大於或等於1024px(而且最大可見寬度爲989px);屏寬在480px及其如下手持設備;屏寬在480px以及橫向(即480尺寸平行於地面)放置的手持設備;屏寬大於或等於480px小於1024px以及垂直放置設備的css樣式。
從上面的例子能夠看出,字符間以空格相連,選取條件包含在小括號內,srules爲兼容設置的樣式表,包含在中括號裏面。only(限定某種設備,可省略),and(邏輯與),not(排除某種設備)爲邏輯關鍵字,多種設備用逗號分隔,這一點繼承了css基本語法。
四、可用設備名參數:
可用設備名參數 可用設備名參數
五、邏輯關鍵字:
邏輯關鍵字 邏輯關鍵字
六、可用設備名參數:
可用設備名參數 可用設備名參數
七、測試Media Queries
最後,咱們須要對咱們剛剛設計的Media Queries進行測試,想要在不一樣設備上測試Media Queries的效果,可使用一個瀏覽工具來檢驗不一樣尺寸屏幕下的顯示效果,在這裏爲你們介紹一個不錯的在線工具 – Responsivator,它能夠模擬iPhone等各類不一樣設備,而且還能夠自定義不一樣尺寸屏幕的顯示效果,只須要輸入一個url甚至是本地的一個url(如:http://127.0.0.1/),就能夠看到網站在不一樣尺寸屏幕下的顯示效果。
八、經過Media Queries實現響應式佈局設計
好了,咱們明白了什麼是Media Query,那咱們一塊兒來運用到響應式佈局的設計項目中去。設計思路很簡單,首先先定義在標準瀏覽器下的固定寬度(假如標準瀏覽器的分辨率爲1024px,那麼咱們設置寬爲980px),而後用Media Query來監測瀏覽器的尺寸變化,當瀏覽器的分辨率小於1024px的時候,則經過Media Query預設的樣式表來將頁面的寬度設置爲百分比顯示,這樣子頁面的結構元素就會根據瀏覽器的的尺寸來進行相對應的調整。同理,當瀏覽器的可視區域改變到某個值(假如爲650px)的時候,頁面的結構元素根據Media Query預設的層疊樣式表來進行相對應的調整。看看咱們的例子:
/* 當瀏覽器的可視區域小於980px */
@media screen and ( max-width: 980px ) {
#wrap {width: 90%; margin:0 auto;}
#content {width: 60%;padding: 5%;}
#sidebar {width: 30%;}
#footer {padding: 8% 5%;margin-bottom: 10px;}
}
/* 當瀏覽器的可視區域小於650px */
@media screen and ( max-width: 650px ) {
#header {height: auto;}
#searchform {position: absolute;top: 5px;right: 0;}
#content {width: auto; float: none; margin: 20px 0;}
#sidebar {width: 100%; float: none; margin: 0;}
}
經過上面咱們就能夠監測瀏覽器的可視區域變化的時候咱們的頁面結構元素也會相對應的變化,固然你能夠再多設置幾個尺寸的監測層疊樣式表,這樣子就能夠根據不一樣尺寸設備來進行響應式的佈局。爲了更好的顯示效果,咱們每每還要格式化一些CSS屬性的初始值:
/* 禁用iPhone中Safari的字號自動調整 */
html {
-webkit-text-size-adjust: none;
}
/* 設置HTML5元素爲塊 */
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
display: block;
}
/* 設置圖片視頻等自適應調整 */
img {
max-width: 100%;
height: auto;
width: auto\9; /* ie8 */
}
.video embed, .video object, .video iframe {
width: 100%;
height: auto;
}
最後要注意的是在頁面的頭部<head></head>之間加上下面這句∶
<meta name=「viewport」 content=「width=device-width; initial-scale=1.0」>
meta viewport這個屬性是在移動設備上設置原始大小顯示和是否縮放的聲明。
參數設置∶
width – viewport的寬度
height – viewport的高度
initial-scale – 初始的縮放比例
minimum-scale – 容許用戶縮放到的最小比例
maximum-scale – 容許用戶縮放到的最大比例
user-scalable – 用戶是否能夠手動縮放
好比一個移動終端屏幕顯示最大寬度爲480px,那麼css代碼以下: [2]  
@media only screen and(max-device-width:480px){…/*此處爲支持此移動設備的css樣式代碼,需將其放置於pc終端css代碼以後覆蓋之*/}
若是是大型的網站或項目,咱們講爲各種型的移動終端獨立編寫css樣式文件,此時的使用方式以下:
<link rel=」stylesheet」 type=」text/css」 media=」only screen and (max-device-width:480px)」 href=」small_screen480.css」>
/*small_screen480.css即爲對480px大小移動終端書寫的css文件*/
css文件被區分引用,接下來的工做就是咱們很是熟識的彈性佈局了,另外再注意倆點,一是圖片,在移動設備上,要作一些特定適合的小圖片來匹配,若是單純使用壓縮的圖片會失真,影響用戶體驗;二是在頭部加入以下代碼,目的是聲明在移動設備上設置原始大小顯示和是否縮放 [2]  
<meta name=」viewport」 content=」width=device-width; initial-scale=1.0″>
最後說下IE瀏覽器,由於他不支持media Queries的,使用時須要引用一個Media Query Javascript解決,以下: [2]  
<!–[if lt IE 9]>
<script src=」../../css3-mediaqueries.js」></script>
<![endif]–>

CSS3新特性,兼容性,兼容方法總結

 

css3手冊css3手冊

邊框

border-radius

用於添加圓角效果

語法:

border-radius:[ <length> | <percentage> ]{1,4} [ / [ <length> | <percentage> ]{1,4} ]?
<length>:用長度值設置對象的圓角半徑長度。不容許負值
<percentage>:用百分比設置對象的圓角半徑長度。不容許負值

實例:

border-radius:10px;

 

border-radius:5px 10px 15px 20px; //順序是順時針
 

border-radius:26px 106px 162px 32px/28px 80px 178px 26px; //標準語法格式
 

 

border-radius:50%; //是相對於元素佔據尺寸的百分比,即包含邊框和padding後的尺寸

 

 

.radius{
    border-top-left-radius:5px;      //左上角,注意順序是先上下後左右
    border-top-right-radius:10px;    //左上角
    border-bottom-left-radius:15px;  //左下角
    border-bottom-left-radius:20px;  //右上角
    background-color:red;  //即便元素沒有邊框,圓角也能夠用到 background 上面,具體效果受 background-clip 影響。
}
 
兼容性:

IE9+,Firefox4+,Chrome5+,Safari5+,Opera01.5+,iOS Safari4+,Android Browser2.2+ ,Android Chrome18+

兼容方法:

低版本的chrome:-webkit-border-radius:10px;
低版本的firefox:-moz-border-radius:10px;
IE6/7/8:引入ie-css3兼容文件,不支持除了黑色(#000)之外的其餘顏色
詳情參閱讓IE6/IE7/IE8瀏覽器支持CSS3屬性
詳情參閱border-radius

box-shadow

用於添加陰影效果

語法:

box-shadow:none|[inset? && [<offset-x><offset-y><blur-radius>?<spread-radius>?<color>?]]#
inset:設置對象的陰影類型爲內陰影。該值爲空時,則對象的陰影類型爲外陰影
<offset-x>: 這是第一個 length值設置水平偏移量,若是是負值則陰影位於元素左邊。
<offset-y>: 這是第二個 length值設置垂直偏移量,若是是負值則陰影位於元素上面。
<blur-radius>:這是第三個 length值。值越大,糊糊面積越大,陰影就越大越淡。 不能爲負值。默認爲0,此時陰影邊緣銳利。
<color>:設置對象的陰影的顏色。

實例:

box-shadow: 10px 10px 5px #888;

 

box-shadow: 3px 3px green, -1em 0 0.4em gold;
 

 

兼容性:

IE9.0+,Firefox4.0+,Chrome10.0+,Safari5.1+,Opera10.5+,iOS Safari5.0+,Android Browser4.0+,Android Chrome18.0+

兼容方法:

低版本的chrome:-webkit-box-shadow:10px 10px 5px #888;
低版本的firefox:-moz-box-shadow:10px 10px 5px #888;
IE6/7/8:

  • 方法一:

    filter:progid:dXImageTransform.Microsoft.DropShadow(color=#888888,offX=10,offY=10,positives=true);
    缺點:陰影不能邊緣模糊
  • 方法二:

    filter:progid:DXImageTransform.Microsoft.Shadow(color='#0099ff', Direction='120', Strength='10');
    相似於投影效果,缺點:陰影不能邊緣模糊
  • 方法三(推薦)、引入ie-css3兼容文件behavior:url(ie-css3.htc)
    缺點:不支持除了黑色(#000)之外的其餘顏色
    詳情參閱讓IE6/IE7/IE8瀏覽器支持CSS3屬性
    詳情參閱box-shadow

border-image

用來給元素邊框添加背景圖片

語法:
border-image:<' border-image-source '> || <' border-image-slice '> [ / <' border-image-width '> | 
/ <' border-image-width '>? / <' border-image-outset '> ]? || <' border-image-repeat '>

<' border-image-source '>:設置或檢索對象的邊框是否用圖像定義樣式或圖像來源路徑。
<' border-image-slice '>: 設置或檢索對象的邊框背景圖的分割方式,該屬性指定從上,右,下,左方位來分隔圖像,將圖像分紅4個角,4條邊和中間區域共9份,中間區域始終是透明的(即沒圖像填充),除非加上關鍵字 fill。
<' border-image-width '>: 設置或檢索對象的邊框厚度。
<' border-image-outset '>:設置或檢索對象的邊框圖像可超出邊框盒的大小。
<' border-image-repeat '>:設置或檢索對象的邊框圖像的平鋪方式repeat,round,stretch。

實例:

border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 round;

 

border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
 

 

兼容性:

IE11+, Firefox15+, Chrome16+ , Safari6+,Opera15+,iOS Safari6+,Android Browser4.4+, Android Chrome18+

兼容方法:

低版本的chrome:-webkit-border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
低版本的firefox:-moz-border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
低版本的Opera:-o-border-image:url("http://www.w3school.com.cn/i/border.png") 30 30 stretch;
IE未解決
詳情參閱border-image,border-image

背景

background-size

設置背景圖片大小。

語法:

background-size:<bg-size>#
<bg-size> = [ <length> | <percentage> | auto ]{1,2} | cover | contain
<length>:用長度值指定背景圖像大小。不容許負值。
<percentage>:用百分比指定背景圖像大小。不容許負值。
auto:背景圖像的真實大小。
cover:將背景圖像等比縮放到徹底覆蓋容器,背景圖像有可能超出容器。
contain:將背景圖像等比縮放到寬度或高度與容器的寬度或高度相等,背景圖像始終被包含在容器內

實例:

background-size: cover;

 

background-size: contain;
 

 

兼容性:

IE9+,Firefox4+, Chrome15+,Safari7+, Opera15+, iOS Safari7+, Android Browser4.4+, Android Chrome18+

兼容方法:

低版本的chrome:-webkit-background-size:10px 10px 5px #888; //不支持background簡寫
低版本的firefox:-moz-background-size:10px 10px 5px #888;
IE8:

  • 方法一(推薦)、引入backgroundsize.min.htc兼容文件

    .size {
    width: 400px;
    height: 400px;
    margin: 20px auto 0;
    background:  green url(img/1.jpg) no-repeat scroll center 0;
    background-size: cover;
    -ms-behavior: url(js/backgroundsize.min.htc);
    }
  • 方法2、針對IE8的hack

    <!--[if IE 8]> <style type="text/css"> .size{ -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/1.jpg', sizingMethod='scale')"; }  //該函數只能模仿cover值,IE8下效果與IE9/10稍有不一樣,圖片佔滿背景大小且不超出 </style><![endif]-->

    詳情參閱background-size

background-origin

指定背景圖片background-image 屬性的原點位置的背景相對區域,當使用 background-attachment 爲fixed時,該屬性將被忽略不起做用

語法:

background-origin:<box>#
<box> = border-box | padding-box | content-box
padding-box:從padding區域(含padding)開始顯示背景圖像。
border-box: 從border區域(含border)開始顯示背景圖像。
content-box:從content區域開始顯示背景圖像

實例:

background-origin:content-box;padding:10px;

111111111111111111111111111

background-origin:border-box;padding:10px;border:15px solid transparent;
111111111111111111

 

兼容性:

IE9+,Firefox4.0+ Chrome4.0+ Safari6.0+, iOS Safari6.0+, Android Browser3.0+, Android Chrome18+

兼容方法:

firefox4.0如下:-moz-background-origin:padding | border; //沒有content
IE8下background-origin默認爲padding-box

詳情參閱background-origin

background-clip

設置元素的背景(背景圖片或顏色)是否延伸到邊框下面。

語法:

background-clip:<box>#
<box> = border-box | padding-box | content-box | inherit
border-box背景延伸到邊框外沿(可是在邊框之下)。
padding-box邊框下面沒有背景,即背景延伸到內邊距外沿。
content-box背景裁剪到內容區 (content-box) 外沿。

實例:

background-clip:border-box;

111111111111111

 

兼容性:

IE9+,Firefox4.0+, Chrome4.0+, Safari6.0+,iOS Safari6.0+, Android Browser3.0+, Android Chrome18.0+

兼容方法:

firefox4.0如下:-moz-background-clip:padding | border; //沒有content
IE8下background-clip默認爲padding-box

multiple backgrounds

語法:
background:[<bg-layer>,]*<final-bg-layer><bg-layer>=<bg-image>||<position>[/<bg-size>]?||<repeat-style>||<attachment>||<box>||<box><final-bg-layer>=<bg-image>||<position>[/<bg-size>]?||<repeat-style>||<attachment>||<box>||<box>||<'background-color'>
實例:
background:
    url(test1.jpg) no-repeat scroll 10px 20px/50px 60px padding-box,
    url(test1.jpg) no-repeat scroll 10px 20px/70px 90px padding-box,
    url(test1.jpg) no-repeat scroll 10px 20px/110px 130px padding-box #aaa;
兼容性:

IE9+,Firefox3.6+, Chrome4.0+, Safari3.1+

兼容方法:

未解決

文本

text-shadow

爲文字添加陰影

語法:

textshadow:none | [inset? && [ <offset-x> <offset-y> <blur-radius>?<color>? ] ]#
inset:設置對象的陰影類型爲內陰影。該值爲空時,則對象的陰影類型爲外陰影
<offset-x>: 這是第一個 length值設置水平偏移量,若是是負值則陰影位於元素左邊。
<offset-y>: 這是第二個 length值設置垂直偏移量,若是是負值則陰影位於元素上面。
<blur-radius>:這是第三個 length值。值越大,糊糊面積越大,陰影就越大越淡。 不能爲負值。默認爲0,此時陰影邊緣銳利。
<color>:設置對象的陰影的顏色。

實例:

text-shadow:1px 1px 2px red;

12212121

 

兼容性:

IE10+, Firefox3.5+, Chrome4.0+, Safari6.0+

兼容方法:

低版本的chrome:-webkit-text-shadow:1px 1px 1px #000;
低版本的firefox:-moz-text-shadow:1px 1px 1px #000;
IE6/7/8:

  • 方法1、引入ie-css3兼容文件behavior:url(ie-css3.htc);
  • 方法2、 filter:shadow(color=blue,direction=225),direction表示投影角度

詳情參閱讓IE6/IE7/IE8瀏覽器支持CSS3屬性

word-wrap

瀏覽器是否容許單詞中斷換行
word-wrap 屬性本來屬於微軟的一個私有屬性,在 CSS3 如今的文本規範草案中已經被重名爲 overflow-wrap
當你使用 <' overflow-wrap '> 時,最好同時使用 <' word-wrap '> 做爲備選,做向前兼容。

語法:

word-wrap:normal | break-word

實例:

word-wrap: break-word;

FStrPrivFinÄndG (Gesetz zur Änderung des Fernstraßenbauprivatfinanzierungsgesetzes und straßenverkehrsrechtlicher Vorschriften)

 

兼容性:

IE6+,Firefox3.5+, Chrome4+, Safari6+, iOS Safari6+, Android Browser2.1+, Android Chrome18+

兼容方法:

現代瀏覽器幾乎都支持

文字

@font-face

可以加載服務器端的字體文件,讓客戶端顯示客戶端所沒有安裝的字體。

語法:
@font-face {
    font-family: <YourWebFontName>;
    src: <source> [<format>][,<source> [<format>]]*;
    [font-weight: <weight>];
    [font-style: <style>];
}
實例:
@font-face {
    font-family: 'YourWebFontName';
    src: url('YourWebFontName.eot'); /* IE9 Compat Modes */
    src: url('YourWebFontName.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
         url('YourWebFontName.woff') format('woff'), /* Modern Browsers */
         url('YourWebFontName.ttf')  format('truetype'), /* Safari, Android, iOS */
         url('YourWebFontName.svg#YourWebFontName') format('svg'); /* Legacy iOS */
    font-weight: normal;
    font-style: normal;
}
兼容性:

幾乎全部瀏覽器支持網絡字體@font-face的用法

兼容方法:

詳情參閱@font-face

2D3D轉換

transform

元素能夠按照設定的值變形、旋轉、縮放、傾斜

語法:

transform : none | <transform-function> [ <transform-function> ]*
transform-function list:

  • matrix() = matrix(<number>[,<number>]{5,5})
  • matrix3d() = matrix3d(<number>[,<number>]{15,15})
  • translate() = translate(<translation-value>[,<translation-value>]?)
  • translate3d() = translate3d(<translation-value>,<translation-value>,<length>)
  • translatex() = translatex(<translation-value>)
  • translatey() = translatey(<translation-value>)
  • translatez() = translatez(<length>)
  • rotate() = rotate(<angle>)
  • rotate3d() = rotate3d(<number>,<number>,<number>,<angle>)
  • rotatex() = rotatex(<angle>)
  • rotatey() = rotatey(<angle>)
  • rotatez() = rotatez(<angle>)
  • scale() = scale(<number>[,<number>]?)
  • scale3d() = scale3d(<number>,<number>,<number>)
  • scalex() = scalex(<number>)
  • scaley() = scaley(<number>)
  • scalez() = scalez(<number>)
  • skew() = skew(<angle>[,<angle>]?)
  • skewx() = skewx(<angle>)
  • skewy() = skewy(<angle>)
  • perspective() = perspective(<length>)
  • <translation-value> = <length> | <percentage>

    實例:

    transform:none;

     

    transform:rotate(30deg) scale(0.5);//你們記住了是空格隔開
     

    transform:skew(45deg);
     

    transform:translate(100px 20px);
     

     

兼容性:

IE9+, Firefox3.5+, Chrome4.0+, Safari6.0+, iOS Safari8.4+, Android Browser4.4+, Android Chrome34+

兼容方法:
.transform{
    -webkit-transform: x,y;
    -moz-transform: x,y;
    -ms-transform: x,y;
    -o-transform: x,y;
    transform: x,y;
}

IE8及如下:用IE濾鏡

{
    filter:fliph;//水平翻轉至關於transform:rotateY(180deg)
    filter:flipv;//垂直翻轉至關於transform:rotateX(180deg)
}

詳情參閱transform

過渡

transition

css的屬性值在必定的時間區間內平滑地過渡

語法:
transition :[<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]*

transition-property : none | all | [ <ident> ] [, <ident> ]*檢索或設置對象中的參與過渡的屬性
transition-duration : <time> [, <time>]*檢索或設置對象過渡的持續時間

transition-timing-function :ease | linear | ease-in | ease-out | ease-in-out | step-start 
| step-end | steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)
[,ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps(<integer>[, 
[ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)]*

檢索或設置對象中過渡的動畫類型

transition-delay : <time> [, <time>]* 檢索或設置對象延遲過渡的時間

實例:

transition: all .5s ease-in-out 1s;

 

 

兼容性:

IE10+, Firefox16+, Chrome26+ ,Safari6.1+ , iOS Safari7+, Android Browser4.4+, Android Chrome25+

兼容方法:
p {
  -webkit-transition: all .5s ease-in-out 1s;
  -moz-transition: all .5s ease-in-out 1s;
  -o-transition: all .5s ease-in-out 1s;
  transition: all .5s ease-in-out 1s;
}

IE9以及更早的版本,不支持 transition 屬性。
詳情參閱transition

動畫

animation

檢索或設置對象所應用的動畫特效。

語法:

animation:<single-animation>[,<single-animation>]*

<single-animation> = <single-animation-name> || <time> || <single-animation-timing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state>

<' animation-name '>:檢索或設置對象所應用的動畫名稱
<' animation-duration '>:檢索或設置對象動畫的持續時間
<' animation-timing-function '>:檢索或設置對象動畫的過渡類型
<' animation-delay '>:檢索或設置對象動畫延遲的時間
<' animation-iteration-count '>:檢索或設置對象動畫的循環次數
<' animation-direction '>:檢索或設置對象動畫在循環中是否反向運動
<' animation-fill-mode '>:檢索或設置對象動畫時間以外的狀態
<' animation-play-state '>:檢索或設置對象動畫的狀態。

實例:
.animation:hover{
    -webkit-animation:animated_div 5s 1;
    -moz-animation:animated_div 5s 1;
    animation:animated_div 5s 1;
}
@keyframes animated_div{
    0%      {transform: rotate(0deg);left:0px;}
    25%     {transform: rotate(20deg);left:0px;}
    50%     {transform: rotate(0deg);left:500px;}
    55%     {transform: rotate(0deg);left:500px;}
    70%     {transform: rotate(0deg);left:500px;background:#1ec7e6;}
    100%    {transform: rotate(-360deg);left:0px;}
}
 
兼容性:

IE10+,Firefox16+, Chrome43+, Safari9+

兼容方法:

低版本的chrome:-webkit-
低版本的firefox:-moz-
IE9及如下不支持
詳情參閱animation

@keyframes

用於建立動畫

語法:
@keyframes IDENT {
      0% {
         Properties:Properties value;
      }
      Percentage {
         Properties:Properties value;
      }
      100% {
         Properties:Properties value;
      }
}
實例:

見上例

兼容性:

IE10+,Firefox16+, Chrome43+, Safari9+

兼容方法:

低版本的chrome:-webkit-
低版本的firefox:-moz-
IE9及如下不支持
詳情參閱animation

顏色

linear-gradient radial-gradient

實現真實的漸變效果。

語法:

<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)
<side-or-corner> = [left | right] || [top | bottom]
<color-stop> = <color> [ <length> | <percentage> ]?
<angle>:用角度值指定漸變的方向(或角度)。
<color-stop> 用於指定漸變的起止顏色:

實例:

background:linear-gradient(to bottom, #fff 0%, red 100%);

 

background:radial-gradient(#fff 0%, red 100%);
 

 

兼容性:

IE10+, Firefox16+, Chrome26+, Safari6.1+

兼容方法:

低版本的chrome:-webkit-
低版本的firefox:-moz-
IE9及如下可以使用 IE 濾鏡處理:

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000',endColorstr='#ffffff');

詳情參閱gradient

rgba(r,g,b,a)

設置顏色red+green+blue+alpha

語法:

rgba(r,g,b,alpha)

實例:

rgba(255,0,0,.2)

 

 

兼容性:

IE9+, Firefox2+, Chrome4+, Safari3+, iOS Safari3.2+, Android Browser2.1+, Android Chrome18+

兼容方法:

IE6/7/8不支持使用 rgba 模式實現透明度,可以使用 IE 濾鏡處理

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fff0000,endColorstr=#7fff0000);

使用後咱們又發現了個小問題,IE9下顏色更深一點,仔細研究發如今IE9下rgba顏色和IE濾鏡都能被識別,因此被覆蓋了顏色就更深一點
解決辦法:

.demo{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fff0000,endColorstr=#7fff0000);}
:root .demo{filter:none;background-color:rgba(255,0,0,.2);}//IE8及如下不識別

詳情參閱IE8下兼容rgba顏色的半透明背景

flex佈局

Flex元素是可讓你的佈局根據瀏覽器的大小變化進行自動伸縮。

flex

設置或檢索彈性盒模型對象的子元素如何分配空間。用在子容器上

語法:

flex:none | <' flex-grow '> <' flex-shrink >'? || <' flex-basis '>
默認值爲0 1 auto,建議優先使用這個屬性,而不是單獨寫三個分離的屬性,由於瀏覽器會推算相關值。
flex-grow:<number>設置或檢索彈性盒的擴展比率。
默認爲0,若是全部子容器的flex-grow屬性都爲1,則它們將等分剩餘空間(若是有的話)。若是一個子容器的flex-grow屬性爲2,其餘都爲1,則前者佔據的剩餘空間將比其餘項多一倍。
flex-shrink:<number>設置或檢索彈性盒的收縮比率。
若是全部子容器的flex-shrink屬性都爲1,當空間不足時,都將等比例縮小。若是一個子容器的flex-shrink屬性爲0,其餘子容器都爲1,則空間不足時,前者不縮小。
flex-basis:<length> | <percentage> | auto | content
定義了在分配多餘空間以前,子容器佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的默認值爲auto,即子容器的原本大小。

實例:
.parent{ 
    display:-webkit-flex;  //低版本的chrome
    display:-moz-box;      //低版本的firefox
    display:-ms-flexbox;   //IE10
    display:flex; 
    width:600px; height:100px;border:1px solid #000; 
}
.parent div{
    -webkit-flex:1;
    -moz-box-flex:1;
    -ms-flex:1;
    flex:1;
    border:1px solid red;
}
children1
children2
children3
兼容性:

IE11+,Firefox22+, Chrome21+, Safari6.1+

兼容方法:

低版本的chrome:-webkit- 或者 -webkit-box-flex
低版本的firefox:-moz-box-flex:1;
IE10:-ms-flex:1;
box-flex效果相似於過渡版本和新版本的flex屬性;
詳情參閱flex

flex-flow

設置或檢索彈性盒模型對象的子元素排列方式。用在父容器上

語法:

flex-flow:<' flex-direction '> || <' flex-wrap '>
<' flex-direction '>:定義彈性盒子元素的排列方向。
flex-direction:row | row-reverse | column | column-reverse

  • row:主軸與行內軸方向做爲默認的書寫模式。即橫向從左到右排列(左對齊)。
  • row-reverse:對齊方式與row相反。
  • column:主軸與塊軸方向做爲默認的書寫模式。即縱向從上往下排列(頂對齊)。
  • column-reverse:對齊方式與column相反。

<' flex-wrap '>控制flex容器是單行或者多行.flex-wrap:nowrap | wrap | wrap-reverse

  • nowrap:flex容器爲單行。該狀況下flex子項可能會溢出容器
  • wrap:flex容器爲多行。該狀況下flex子項溢出的部分會被放置到新行,子項內部會發生斷行
  • wrap-reverse:反轉 wrap 排列。
實例:
flex-flow:row nowrap
  • a
  • b
  • c
flex-flow:row wrap-reverse
  • a
  • b
  • c
flex-flow:column wrap-reverse;
  • a
  • b
  • c
兼容性:

IE11+, Firefox28+, Chrome29+, Safari9+

兼容方法:

能夠經過box-orient:horizontal + box-direction:normal 達到新版本 flex-direction:row 的效果;
能夠經過box-orient:horizontal + box-direction:reverse 達到新版本 flex-direction:row-reverse 的效果;
能夠經過box-orient:vertical + box-direction:normal 達到新版本 flex-direction:column 的效果;
能夠經過box-orient:horizontal + box-direction:reverse 達到新版本 flex-direction:column-reverse 的效果;
box-lines效果相似於過渡版本和新版本的flex-wrap屬性

justify-content

設置或檢索彈性盒子元素在主軸(橫軸)方向上的定位方式。

語法:

justify-content:flex-start | flex-end | center | space-between | space-around

  • flex-start(默認值):左對齊
  • flex-end:右對齊
  • center: 居中
  • space-between:兩端對齊,項目之間的間隔都相等。
  • space-around:每一個子元素兩側的間隔相等。因此,子元素之間的間隔比子元素與邊框的間隔大一倍
實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

詳情參閱justify-content

align-content

調整伸縮子元素在側軸(縱軸)上的定位方式,若是子元素只有一根軸線,該屬性不起做用

語法:

align-content:flex-start | flex-end | center | space-between | space-around | stretch

  • flex-start:與交叉軸的起點對齊。
  • flex-end:與交叉軸的終點對齊。
  • center:與交叉軸的中點對齊。
  • space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
  • space-around:每根軸線兩側的間隔都相等。因此,軸線之間的間隔比軸線與邊框的間隔大一倍。
  • stretch(默認值):軸線佔滿整個交叉軸。
實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-

box-pack效果等同於過渡版本的flex-pack屬性和新版本的justify-content屬性;

詳情參閱align-content

align-items

定義flex子項在flex容器的當前行的側軸(縱軸)方向上的定位方式。

語法:

align-items:flex-start | flex-end | center | baseline | stretch

  • flex-start:交叉軸的起點對齊。
  • flex-end:交叉軸的終點對齊。
  • center:交叉軸的中點對齊。
  • baseline: 項目的第一行文字的基線對齊。
  • stretch(默認值):若是項目未設置高度或設爲auto,將佔滿整個容器的高度。
實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-

box-align效果等同於過渡版本的flex-align屬性和新版本的align-items屬性;

詳情參閱align-items

align-self

定義flex子項單獨在側軸(縱軸)方向上的對齊方式。align-self屬性容許單個項目有與其餘項目不同的對齊方式,可覆蓋align-items屬性。默認值爲auto,表示繼承父元素的align-items屬性,若是沒有父元素,則等同於stretch。

語法:

align-self:auto | flex-start | flex-end | center | baseline | stretch

實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-
詳情參閱align-self

order

設置或檢索彈性盒模型對象的子元素的排列順序。數值越小,排列越靠前,默認爲0。

語法:

order:<integer>默認爲0

實例:

兼容性:

IE11+, Firefox22+, Chrome29+, Safari9+

兼容方法:

低版本的chrome:-webkit-

box-oridinal-group效果等同於過渡版本的flex-order屬性和新版本的order屬性;
詳情參閱order

其餘

box-sizing

用來改變默認的 CSS 盒模型 對元素寬高的計算方式

語法:

box-sizing:content-box | border-box
content-box:
padding和border不被包含在定義的width和height以內。對象的實際寬度等於設置的width值和border、padding之和,即 ( Element width = width + border + padding )
border-box:
padding和border被包含在定義的width和height以內。對象的實際寬度就等於設置的width值,即便定義有border和padding也不會改變對象的實際寬度,即 ( Element width = width )

實例:

box-sizing:content-box

 

box-sizing:border-box
 

 

兼容性:

IE8+, Firefox29+, Chrome10+, Safari6+

兼容方法:

詳情參閱box-sizing

resize

設置或檢索對象的區域是否容許用戶縮放,調節元素尺寸大小。多用於textarea元素

語法:

resize:none | both | horizontal | vertical

實例:

resize:none

兼容性:

Firefox Chrome Safari現代版都兼容

兼容方法:

IE全不兼容

若是您對本文有什麼疑問,歡迎提出我的看法,若您以爲本文對你有用,不妨幫忙點個贊,或者在評論裏給我一句讚美,小小成就都是從此繼續爲你們編寫優質文章的動力, 歡迎您持續關注個人博客:)

做者:Jesse131

出處:http://www.cnblogs.com/jesse131/

關於做者:專一前端開發開發。若有問題或建議,請多多賜教!

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 
分類:  CSS兼容性
 
好文要頂  關注我  收藏該文   
Jesse131
關注 - 11
粉絲 - 84
 
 
+加關注
7
0
 
 
 
« 上一篇: 前端構建工具Gulp使用總結
» 下一篇: jQuery插件開發總結
posted @  2016-04-28 07:50  Jesse131 閱讀( 14374) 評論( 8編輯  收藏
 

 
  
#1樓  2016-04-28 08:12  清風送明月   
好極了
支持(0)反對(0)
  
#2樓  2016-04-28 08:23  眼神與背影   
mark
支持(0)反對(0)
  
#3樓  2016-04-28 14:31  Easy C#   
關於flex的圖片彷佛在阮一峯的blog上看到過
支持(1)反對(0)
  
#4樓[ 樓主2016-04-28 21:10  Jesse131   
@ Easy C#
正是
支持(0)反對(0)
  
#5樓  2016-05-18 15:56  拈花夕拾   
樓主 你的返回頂部的小火箭 好帥氣 求源碼 謝謝 郵箱 784504510@qq.com
支持(0)反對(0)
  
#6樓  2016-08-03 23:41  hahaha222   
右邊的火箭真心帥
支持(0)反對(0)
  
#7樓  2017-04-15 17:52  御風c   
樓主,火箭源碼有嗎?郵箱879525323@qq.com
支持(0)反對(0)
  
#8樓[ 樓主2017-04-16 21:07  Jesse131   
@ 御風c
博客園頁面重構代碼已上傳至個人GitHub,請點擊頁面頭部的Fork me on GitHub便可
支持(0)反對(0)
 
 
刷新評論刷新頁面返回頂部
 
 
 
 
相關文章
相關標籤/搜索