Rumah hujung hadapan web html tutorial CSS3阴影 box-shadow的使用和技巧总结_html/css_WEB-ITnose

CSS3阴影 box-shadow的使用和技巧总结_html/css_WEB-ITnose

Jun 24, 2016 am 11:40 AM

 

本文摘自:http://blog.csdn.net/freshlover/article/details/7610269

 

text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果。随着html5和CSS3的普及,这一特殊效果使用越来越普遍。

基本语法是{box-shadow:[inset] x-offset y-offset blur-radius spread-radiuscolor}

对象选择器 {box-shadow:[投影方式] X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色}

box-shadow属性的参数设置取值:

阴影类型:此参数可选。如不设值,默认投影方式是外阴影;如取其唯一值“inset”,其投影为内阴影;

X-offset:阴影水平偏移量,其值可以是正负值。如果值为正值,则阴影在对象的右边,其值为负值时,阴影在对象的左边;

Y-offset:阴影垂直偏移量,其值也可以是正负值。如果为正值,阴影在对象的底部,其值为负值时,阴影在对象的顶部;

阴影模糊半径:此参数可选,,但其值只能是为正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊;

阴影扩展半径:此参数可选,其值可以是正负值,如果值为正,则整个阴影都延展扩大,反之值为负值时,则缩小;

阴影颜色:此参数可选。如不设定颜色,浏览器会取默认色,但各浏览器默认取色不一致,特别是在webkit内核下的safari和chrome浏览器下表现为透明色,在Firefox/Opera下表现为黑色(已验证),建议不要省略此参数。

浏览器的兼容:

 

 

为了兼容各主流浏览器并支持这些主流浏览器的较低版本,在基于Webkit的Chrome和Safari等浏览器上使用box-shadow属性时,我们需要将属性的名称写成-webkit-box-shadow的形式。Firefox浏览器则需要写成-moz-box-shadow的形式。

[css]  view plain copy

 

  1. .box-shadow{  
  2.   
  3.          //Firefox4.0-  
  4.   
  5.          -moz-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;  
  6.   
  7.          //Safariand Google chrome10.0-  
  8.   
  9.          -webkit-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;  
  10.   
  11.          //Firefox4.0+、 Google chrome 10.0+ 、 Oprea10.5+ and IE9  
  12.   
  13.          box-shadow:  投影方式 X轴偏移量 Y轴偏移量 阴影模糊半径 阴影扩展半径 阴影颜色;  
  14.   
  15. }  

 

注意:出于方便,后文的css属性有的地方只写了box-shadow属性,没有写-moz-和-webkit-前缀的形式,在使用中不要忘记加上。

 

为了更清楚的了解box-shadow的特征,做几个小测试,看效果:

 相关代码:

 

[html]  view plain copy

 

  1. nbsp;html>  
  2.   
  3.   
  4.   
  5.   
  6. CSS3属性:box-shadow测试  
  7. <script></script>  
  8. <script></script>  
  9. .box-shadow-1{  
  10.   -webkit-box-shadow: 3px 3px 3px;  
  11.   -moz-box-shadow: 3px 3px 3px;  
  12.   box-shadow: 3px 3px 3px;  
  13. }  
  14. .box-shadow-2{  
  15.   -webkit-box-shadow:0 0 10px #0CC;  
  16.   -moz-box-shadow:0 0 10px #0CC;  
  17.   box-shadow:0 0 10px #0CC;  
  18. }  
  19. .box-shadow-3{  
  20.   -webkit-box-shadow:0 0 10px rgba(0, 204, 204, .5);  
  21.   -moz-box-shadow:0 0 10px rgba(0, 204, 204, .5);  
  22.   box-shadow:0 0 10px rgba(0, 204, 204, .5);  
  23. }  
  24. .box-shadow-4{  
  25.   -webkit-box-shadow:0 0 10px 15px #0CC;  
  26.   -moz-box-shadow:0 0 10px 15px #0CC;  
  27.   box-shadow:0 0 10px 15px #0CC;  
  28. }  
  29. .box-shadow-5{  
  30.   -webkit-box-shadow:inset 0 0 10px #0CC;  
  31.   -moz-box-shadow:inset 0 0 10px #0CC;  
  32.   box-shadow:inset 0 0 10px #0CC;  
  33. }  
  34. .box-shadow-6{  
  35.     box-shadow:-10px 0 10px red, /*左边阴影*/  
  36.     10px 0 10px yellow, /*右边阴影*/  
  37.     0 -10px 10px blue, /*顶部阴影*/  
  38.     0 10px 10px green; /*底边阴影*/  
  39. }  
  40. .box-shadow-7{  
  41.     box-shadow:0 0 10px 5px black,  
  42.     0 0 10px 20px red;  
  43. }  
  44. .box-shadow-8{  
  45.     box-shadow:0 0 10px 20px red,  
  46.     0 0 10px 5px black;  
  47. }  
  48. .box-shadow-9{  
  49.     box-shadow: 0 0 0 1px red;  
  50. }  
  51.   
  52.   
  53.   
  54. .obj{  
  55.     width:100px;  
  56.     height:100px;  
  57.     margin:50px auto;  
  58.     background:#eee;      
  59. }  
  60. .outer{  
  61.     width: 100px;  
  62.     height: 100px;  
  63.     border: 1px solid red;  
  64. }  
  65. .inner{  
  66.     width: 60px;  
  67.     height: 60px;  
  68.     background-color: red;  
  69.     -webkit-box-shadow: 50px 50px blue;  
  70.     -moz-box-shadow: 50px 50px blue;  
  71.     box-shadow: 50px 50px blue;  
  72.   }  
  73.   
  74.   
  75.   
  76.   
  77.     
      
  78.     
      
  79.         
      
  80.     
  
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     <script> </script>
  •         $(document).ready(function(){  
  •         if($.browser.msie) {  
  •           $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow  
  •         }  
  •       });  
  •       
  •   
  •   
  •   


  •  

     

     

    结论:

    1)  从.box-shadow-1的效果可以得出不指定属性阴影颜色的情况下,阴影在webkit内核下的safari和chrome浏览器下表现为透明色,在Firefox/Opera下表现为黑色。

     

            

    2)  从内外两个div块inner、outer的对比来看,所有支持box-shadow的主流浏览器都表现为:内层阴影撑破外层容器将整个阴影效果呈现出来。W3C标准用图示的方式对box-shadow的原理和表现进行了解读:

     

    从图中我们可以了解到:圆角border-radius,阴影扩展半径、阴影模糊半径以及padding是如何影响对象阴影的:非零值的border-radius将会以相同的作用影响阴影的外形,但border-image不会影响对象阴影的任何外形;对象阴影同box模型的层次一样,外阴影会在对象背景之下,内阴影会在边框之下背景之上。我们知道,默认情形背景图片是在背景颜色之上的。所以整个层级是:边框>内阴影>背景图片>背景颜色>外阴影。

     

    3)  从. box-shadow-2到. box-shadow-5的效果,我们可以了解到box-shadow取值的作用。

    . box-shadow-2是xy没有偏移,阴影大小10px,没有扩展半径,颜色#0CC即rgba(0, 204,204, 1),这里我们使用的是颜色HEX值;效果

     

    而. box-shadow-3是在. box-shadow-2效果的基础上,应用了rgba颜色值,好处是给box-shadow阴影添加了alpha透明效果。效果:

     

    . box-shadow-4在. box-shadow-2效果的基础上添加了阴影扩展半径15px。

     

    . box-shadow-5在. box-shadow-2效果的基础上,将外阴影设为内阴影。

     

    4). box-shadow-6一个元素使用了多个阴影,多个阴影之间用逗号分隔。给对象四边设置阴影效果,我们是通过改变x-offset和y-offset的正负值来实现,其中x-offset为负值时,生成左边阴影,为正值时生成右边阴影,y-offset为正值是生成底部阴影,为负值时生成顶部阴影。并且把模糊半径设置为0,如果不设置为0的话那么其他三边也将会有阴影。这点需要注意!

     

     

    注意这样的写法是错误的:{box-shadow:-10px 0 10px red, box-shadow:10px 0 10px blue,box-shadow:0 -10px 10px yellow,box-shadow:0 10px 10px green}
    Salin selepas log masuk

     

    并且此处还涉及到一个多阴影的顺序问题。当给同一个元素使用多个阴影属性时,需要注意它的顺序,最先写的阴影将显示在最顶层,如. box-shadow-7设为不同的模糊值:

    .box-shadow-7{

             box-shadow:0 0 10px 5px black,

             0 0 10px 20px red;

    }

    将能看出层叠的顺序效果:

     

    如果将两个阴影效果调一下,改为如下:

    .box-shadow-8{

             box-shadow:0 0 10px 20px red,

             0 0 10px 5px black;

    }

    将只显示红色的阴影效果,因为红色阴影层在上面,模糊半径大,将后面的黑色阴影完全遮挡。

     

    得出的结论是:如果前面的阴影模糊值小于后面的阴影模糊值,那么前面的显示在后面之上,如果前面阴影的模糊值大于后面的阴影模糊值,那么前面的阴影将遮住后面的阴影效果。

    4)  类border边框效果(只设置阴影扩展半径和阴影颜色)

    .box-shadow-9呈现的效果,同boder:1px solid red相似,但box-shadow的效果与border效果在对象高度上有区别,正好要比border高度大一个扩展半径。而且阴影不影响页面的任何布局,这一点可以通过查看firebug下的layout图得以证实。

     

     

    5)  在ie下模拟css3中的box-shadow阴影效果

     

    方法一:可以使用IE的Shadow滤镜

    基本语法:filter:progid:DXImageTransform.Microsoft.Shadow(color=’颜色值’, Direction=阴影角度(数值),Strength=阴影半径(数值));

    注意:该滤镜必须配合background属性一起使用,否则该滤镜失效。

    IE下模拟css3中的box-shadow(阴影)代码:

    [css]  view plain copy

     

    1. .box-shadow{  
    2.     filter: progid:DXImageTransform.Microsoft.Shadow(color='#969696',Direction=135, Strength=5);/*for ie6,7,8*/  
    3.     background-color: #ccc;  
    4.     -moz-box-shadow:2px 2px 5px #969696;/*firefox*/  
    5.     -webkit-box-shadow:2px 2px 5px #969696;/*webkit*/  
    6.     box-shadow:2px 2px 5px #969696;/*opera或ie9*/  
    7. }  

     

    在六一儿童节的专题中,我是这么处理的:

    [css]  view plain copy

     

    1. li.blk-item{  
    2.          width:423px;  
    3.          height:229px;  
    4.          float:left;  
    5.          padding:8px;  
    6.          margin:2px 18px 13px 21px;  
    7.          display:inline;  
    8.          border:1px solid #d3c998;  
    9.          border-radius:2px;  
    10.          filter:progid:DXImageTransform.Microsoft.Shadow(color='#d3c998', Direction=135,Strength=5);/*for ie6,7,8*/  
    11.          background-color: #fff;  
    12.          -moz-box-shadow:2px 2px 5px#d3c998;/*firefox*/  
    13.          -webkit-box-shadow:2px 2px 5px#d3c998;/*webkit*/  
    14.          box-shadow:2px 2px 5px #d3c998;/*opera或ie9*/  
    15.   
    16. }  



    方法二:有些js和.htc的hack文件可以实现IE中的阴影效果。

    ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border-radius和文字阴影属性text-shadow。

    它的使用方法是:下载它并放到你的服务器目录

    在你的

    里面写入下面的代码:

    这个脚本的缺点是IE只支持一部分的box-shadow值。需要注意:

  • 当你使用了这个htc文件后,你的CSS里面,只要写有box-shadow, -moz-box-shadow或-webkit-box-shadow的任何一种,IE就会渲染。
  • 当使用了这个htc文件后,你不能这样写box-shadow: 0 0 10px red; 而应该是box-shadow: 0px 0px 10px red; 否则IE中会失效。
  • 不支持RGBA值中的alpha透明度。
  • 不支持inset内阴影。
  • 不支持阴影扩展。
  • 阴影在IE中只会显示为黑色,不管你设置成其它什么颜色。
  • 方法三:使用jQuery的插件jquery.boxshadow.js,插件的下载地址是http://www.hintzmann.dk/testcenter/js/jquery/boxshadow/jquery.boxshadow.js

    使用方法很简单,将该文件和jquery版本库引入head标签,插入以下js效果代码:

    [javascript]  view plain copy

     

    1. <script> </script>
    2.           $(document).ready(function(){  
    3.    if($.browser.msie) {  
    4.      $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow  
    5.    }  
    6.  });  
    7.   



    注意:js中可以使用:obj.style.webkitBoxShadow=值(字符串);obj.style.MozBoxShadow=值(字符串);obj.style.boxShadow=值(字符串);

     

    补充知识:CSS3的属性

    border-top-left-radius:[ | ] [ | ]?

    默认值:0

    取值:

        用长度值设置对象的左上角(top-left)圆角半径长度。不允许负值

        用百分比设置对象的左上角(top-left)圆角半径长度。不允许负值

    说明:

    设置或检索对象的左上角圆角边框。提供2个参数,2个参数以空格分隔,每个参数允许设置1个参数值,第1个参数表示水平半径,第2个参数表示垂直半径,如第2个参数省略,则默认等于第1个参数。 如设置border-top-left-radius:5px10px;表示top-left这个角的水平圆角半径为5px,垂直圆角半径为10px。对应的脚本特性为borderTopLeftRadius。

    CSS3阴影演示工具http://www.css88.com/tool/css3Preview/Box-Shadow.html

    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    AI Hentai Generator

    AI Hentai Generator

    Menjana ai hentai secara percuma.

    Artikel Panas

    R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
    2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    Repo: Cara menghidupkan semula rakan sepasukan
    4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
    4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Kesukaran mengemas kini caching laman web akaun rasmi: Bagaimana untuk mengelakkan cache lama yang mempengaruhi pengalaman pengguna selepas kemas kini versi? Kesukaran mengemas kini caching laman web akaun rasmi: Bagaimana untuk mengelakkan cache lama yang mempengaruhi pengalaman pengguna selepas kemas kini versi? Mar 04, 2025 pm 12:32 PM

    Cache kemas kini laman web akaun rasmi, perkara ini mudah dan mudah, dan ia cukup rumit untuk minum periuknya. Anda bekerja keras untuk mengemas kini artikel akaun rasmi, tetapi pengguna masih membuka versi lama. Dalam artikel ini, mari kita lihat kelainan dan bertukar di belakang ini dan bagaimana menyelesaikan masalah ini dengan anggun. Selepas membacanya, anda boleh dengan mudah menangani pelbagai masalah caching, yang membolehkan pengguna anda sentiasa mengalami kandungan segar. Mari kita bincangkan asas -asas terlebih dahulu. Untuk meletakkannya secara terang -terangan, untuk meningkatkan kelajuan akses, penyemak imbas atau pelayan menyimpan beberapa sumber statik (seperti gambar, CSS, JS) atau kandungan halaman. Kali seterusnya anda mengaksesnya, anda boleh mengambilnya secara langsung dari cache tanpa perlu memuat turunnya lagi, dan ia secara semula jadi cepat. Tetapi perkara ini juga pedang bermata dua. Versi baru dalam talian,

    Bagaimana saya menggunakan atribut pengesahan borang html5 untuk mengesahkan input pengguna? Bagaimana saya menggunakan atribut pengesahan borang html5 untuk mengesahkan input pengguna? Mar 17, 2025 pm 12:27 PM

    Artikel ini membincangkan menggunakan atribut pengesahan bentuk HTML5 seperti had, corak, min, max, dan panjang untuk mengesahkan input pengguna secara langsung dalam penyemak imbas.

    Apakah amalan terbaik untuk keserasian penyemak imbas dalam HTML5? Apakah amalan terbaik untuk keserasian penyemak imbas dalam HTML5? Mar 17, 2025 pm 12:20 PM

    Artikel membincangkan amalan terbaik untuk memastikan keserasian silang pelayar HTML5, memberi tumpuan kepada pengesanan ciri, peningkatan progresif, dan kaedah ujian.

    Bagaimana cara menambah kesan strok kepada imej PNG di laman web? Bagaimana cara menambah kesan strok kepada imej PNG di laman web? Mar 04, 2025 pm 02:39 PM

    Artikel ini menunjukkan penambahan sempadan PNG yang cekap ke halaman web menggunakan CSS. Ia berpendapat bahawa CSS menawarkan prestasi unggul berbanding dengan JavaScript atau perpustakaan, memperincikan cara menyesuaikan lebar sempadan, gaya, dan warna untuk kesan halus atau menonjol

    Apakah tujuan & lt; DATALIST & GT; unsur? Apakah tujuan & lt; DATALIST & GT; unsur? Mar 21, 2025 pm 12:33 PM

    Artikel ini membincangkan html & lt; datalist & gt; elemen, yang meningkatkan bentuk dengan menyediakan cadangan autokomplete, meningkatkan pengalaman pengguna dan mengurangkan kesilapan. Kira -kira: 159

    Apakah tujuan & lt; kemajuan & gt; unsur? Apakah tujuan & lt; kemajuan & gt; unsur? Mar 21, 2025 pm 12:34 PM

    Artikel ini membincangkan html & lt; kemajuan & gt; elemen, tujuan, gaya, dan perbezaan dari & lt; meter & gt; elemen. Tumpuan utama adalah menggunakan & lt; kemajuan & gt; untuk menyelesaikan tugas dan & lt; meter & gt; untuk stati

    Bagaimana saya menggunakan html5 & lt; masa & gt; elemen untuk mewakili tarikh dan masa secara semantik? Bagaimana saya menggunakan html5 & lt; masa & gt; elemen untuk mewakili tarikh dan masa secara semantik? Mar 12, 2025 pm 04:05 PM

    Artikel ini menerangkan html5 & lt; time & gt; elemen untuk perwakilan tarikh/masa semantik. Ia menekankan pentingnya atribut DateTime untuk pembacaan mesin (format ISO 8601) bersama teks yang boleh dibaca manusia, meningkatkan aksesibilit

    Apakah tujuan & lt; meter & gt; unsur? Apakah tujuan & lt; meter & gt; unsur? Mar 21, 2025 pm 12:35 PM

    Artikel ini membincangkan html & lt; meter & gt; elemen, digunakan untuk memaparkan nilai skalar atau pecahan dalam julat, dan aplikasi umum dalam pembangunan web. Ia membezakan & lt; meter & gt; dari & lt; kemajuan & gt; dan Ex

    See all articles