热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS3下实现边框阴影效果(上)之曲线阴影

我们在浏览网页的时候,有些时候会看到某些区块或者某些图片边框家里炫酷的阴影,在CSS3中新增加了box-shadow属性,为区块添加边框阴影效果提供了便捷;但是有些时候我们还可以看到有

我们在浏览网页的时候,有些时候会看到某些区块或者某些图片边框家里炫酷的阴影,在CSS3中新增加了box-shadow属性,为区块添加边框阴影效果提供了便捷;但是有些时候我们还可以看到有些边框阴影并非边框投射下来生成的阴影,而是诸如曲线阴影,翘边阴影等,效果如下图:

![总阴影效果](http://img.blog.csdn.net/20150701152523427)
上方的白色区域为曲线阴影效果,下面的三个图片为翘边阴影效果

在本文中我们先来讨论曲线阴影的制作;

细看,我们可以看出,其实曲线阴影是由两个图像的边框阴影重叠而成,只是呈现曲线边框的图像被覆盖在图层的下面,下面我们通过代码演示:

  • 我们先定义一个div,用来承接上述的图像

<html>
<head lang="en">
<meta charset="UTF-8">
<title>曲线阴影与翘边阴影title>
head>
<body>
<div class="wrap effect">
<h1>帅气的胖麦h1>
div>
<ul class="box">
<li><img src="imgs/img6.jpg" alt=""/>li>
<li><img src="imgs/img7.jpg" alt=""/>li>
<li><img src="imgs/img8.jpg" alt=""/>li>
ul>
body>
html>
  • 之后我们在CSS样式表中开始样式的定义,我们将可以被复用的样式单独抽取出来,封装到effect样式中
body{
font-family: Arial;
font-size: 20px;
}

body,ul{
margin: 0;
padding: 0;
list-style: none;
}

.wrap{
height: 220px;
width: 40%;
margin: 50px auto;
background: #fff;
}

.wrap h1{
text-align: center;
font-size: 20px;
line-height: 220px;
}
  • 我们统一定义body和ul的样式,将ul列表的样式去掉,接下来我们定义图层阴影效果:
    box-shadow属性的使用方法
    在CSS3中可以使用box-shadow属性让盒在显示的时候产生阴影效果
    使用方法:
    box-shadow:length length length spread color inset
    前三个length表示文字阴影离开文字的横方向距离,阴影离开文字的纵方向距离和阴影的模糊半径,spread指阴影的尺寸,color指定阴影的颜色,inset指将外部阴影(outset)改为内部
    兼容性问题:
    IE9+,firefox 4 chrome,opera以及safari5.1.1支持box-shadow
.effect{
box-shadow: 0px 1px 5px rgba(0,0,0,0.6) ,0 0 40px rgba(0,0,0,0.3) inset;
-webkit-box-shadow: 0px 1px 5px rgba(0,0,0,0.6),0 0 40px rgba(0,0,0,0.3) inset;
-moz-box-shadow: 0px 1px 5px rgba(0,0,0,0.6),0 0 40px rgba(0,0,0,0.3) inset;
-ms-box-shadow: 0px 1px 5px rgba(0,0,0,0.6),0 0 40px rgba(0,0,0,0.3) inset;
-o-box-shadow: 0px 1px 5px rgba(0,0,0,0.6),0 0 40px rgba(0,0,0,0.3) inset;
}

这里使用到box-shadow:inset这个属性,使图层内部生成阴影,在这里我们需要注意到浏览器的兼容问题;

  • 接着我们需要使用到before和after这两个伪元素选择器,添加需要生成的曲线边框的图形,在div之前之后插入,因为两个图层之间的位置是相对的,所以我们需要在effect样式中添加position属性的定义:
position: relative;
  • 接着我们定义要插入的图形的样式,使用before伪元素选择器
.effect:before{
content:'';
background: #f00;
position: absolute;
/*直接设置宽高*/
/*width: ;*/
/*height: ;*/

/*这四个属性必须设置,缺一不可,否则盒子无法绘制*/
top: 50%;
bottom: -1px;
left: 10px;
right: 10px;
box-shadow: 0 0 20px rgba(0,0,0,0.8);
-webkit-box-shadow: 0 0 20px rgba(0,0,0,0.8);
-moz-box-shadow: 0 0 20px rgba(0,0,0,0.8);
-ms-box-shadow: 0 0 20px rgba(0,0,0,0.8);
-o-box-shadow: 0 0 20px rgba(0,0,0,0.8);
border-radius: 120px/10px;
}
  • 为方便观察效果,我们暂时可以将background的背景设置为#f60,便于观察;因为图层内不需要添加如何东西,所以content属性可以设置为”;再者,图层的宽高设置有两种方式,第一种是人工直接设定width和height的值,但是需要注意的是,我们在设置着两个属性值得时候不能超过要显示的外层图像的宽高;第二种方式是设置top,bottom,left,right这4个属性,需要注意的是,这四个属性的设置为必填项,缺一不可;设置完毕后我们可以看到一个矩形框;
  • 为了生成区边,我们可以使用border-radius这个属性:
    • 在CSS3中可以使用border-radius进行圆角边框的绘制,在网页中,经常使用圆角边框来美化页面,在CSS3之前,如果需要在网页上展示一个圆角边框的一个效果,那么我们需要绘制图形,在CSS3出现之后只需要简单的代码就可以实现圆角边框的效果
      使用方法:border-radius半径:
      border-radius属性使用的时候,只需要定义好圆角的半径就可以绘制圆角边框了
      在border-radius属性中,可以指定两个半径:
      border-radius:20px,30px
      第一个半径作为边框的左上角和边框的右下角的圆半径来绘制
      第一个半径作为边框的右上角和边框的左下角的圆半径来绘制
      border-radius:20px/30px
      第一个半径作为水平方向上的圆半径来绘制
      第一个半径作为垂直方向上的圆半径来绘制
      不显示边框时
      在CSS3中,如果使用border-radius属性但是吧边框设置为不显示时,浏览器会把背景的四个角绘制成圆角
  • 之后我们将生成图层隐藏在主图层下面使用z-index属性,,同时将background设置为transparent
z-index: -1;
background: transparent;
  • 为了增强曲线的阴影效果,我们可以在住图层后面也插入一个图形,让两个曲线图形的边框阴影效果重叠,使用after伪元素选择器:
.effect:before,.effect:after{
...
}

到这里我们就制作完了曲线阴影效果了


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • css,背景,位置,y,background, ... [详细]
  • pyecharts 介绍
    一、pyecharts介绍ECharts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部 ... [详细]
  • JavaWeb介绍概念JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有javaapplet,不过使 ... [详细]
author-avatar
mobiledu2502912907
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有