博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再读《精通css》08:阴影
阅读量:6671 次
发布时间:2019-06-25

本文共 1628 字,大约阅读时间需要 5 分钟。

hot3.png

                3.3 阴影
对img-wrapper使用阴影图片作为背景,再用负的空白边移动图片,造成阴影的效果。这涉及到一些细节问题在注释上体现
<div class="img-wrapper"><img src="dunstan.jpg" width="300"?
height="300" alt="Dunstan Orchard" /></div>
.img-wrapper {
    background: url(images/shadow.gif) no-repeat bottom right;
    clear: right;/*为什么要加这个浮动?和设置了float:left有关?*/
    float: left;/*设置float属性可产生“收缩包围的效果”*/
    position: relative;/*修复IE6下的bug*/
}
.img-wrapper img {
    background-color: #fff;
    border: 1px solid #a9a9a9;
    padding: 4px;/*让边框和图片有4px的空间,为了美观*/
    display: block;/*修复IE6下的bug*/
    margin: -5px 5px 5px -5px;/*设置使图片像左上角移动5个像素*/
    position: relative;/*修复IE6下的bug*/
}
依然使用上面的方法,但不使用负的margin,而是对图片使用相对定位。一样可以达到相同的效果:
.img-wrapper {
    background: url(images/shadow.gif) no-repeat bottom right;
    float:left;
    line-height:0;
}
.img-wrapper img {
    background:#fff;
    padding:4px;
    border:1px solid #a9a9a9;
    position:relative;/*用相对定位和设置left,top的值来偏移图片*/
    left:-5px;
    top:-5px;
}
对于上面的方法。追求完美的人会说在阴影开始的地方有点生硬,解决办法是在加一个div,在这个div上运用一个半透明的png做遮罩,就可以了。但郁闷的IE6又不支持png半透明。所以要用gif图片代替。代码如下:
<div class="img-wrapper">
    <div>
        <img src="dunstan.jpg" width="300" height="300" alt="Dunstan" />
    </div>
</div>
.img-wrapper {
    background: url(images/shadow.gif) no-repeat right bottom;
    float: left;
}
.img-wrapper div {
    background: url(images/mask.png) no-repeat left top !important;
    background: url(images/mask.gif) no-repeat left top;/*IE6不认识!important,所以会执行这条规则*/
    padding: 0 5px 5px 0;
}
.img-wrapper img {
    background-color: #fff;
    border: 1px solid #a9a9a9;
    padding: 4px;
}
权衡问题的大小和解决问题所引入的复杂度。我觉得完全没有必要去这么做。往往为了20%的完美要付出80%的代价!
同样书中介绍的最后一种方法——洋葱皮阴影。也是添加了额外的复杂度。在这里就不介绍了。但在代码下载里有实现,相信一看就明白了吧。

转载于:https://my.oschina.net/laichendong/blog/283817

你可能感兴趣的文章
常用数据结构
查看>>
在Antd-Pro下实现文件下载
查看>>
基于Nodejs的前端灰度发布方案_20190228
查看>>
解决Jenkins可选插件列表为空提示“connect time out”问题
查看>>
RN基础
查看>>
304. Range Sum Query 2D - Immutable
查看>>
Redis实现广告缓存、并完善缓存击穿
查看>>
如何绘制最美的鱼骨图?
查看>>
什么是session?什么是cookie?session和cookie有什么区别?
查看>>
javascript引擎执行的过程的理解--语法分析和预编译阶段
查看>>
百度正式发布PaddlePaddle深度强化学习框架PARL
查看>>
迟到但重要的事
查看>>
Node.js 指南(不要阻塞事件循环或工作池)
查看>>
2018年第40周-scala入门-工具使用
查看>>
微信小程序快速入门分享大纲
查看>>
form中只有一个input时自动提交问题
查看>>
面试官:说说快速失败和安全失败是什么
查看>>
node.js中常用的fs文件系统
查看>>
Java抽象类与接口的区别
查看>>
在vue项目中使用vuex
查看>>