巧用box-shadow实现布局区域间隔变色

巧用box-shadow实现布局区域间隔变色

前言

之前给客户做了一个网站,整体是1200px宽.因此,网页整体是放在一个 1200px的盒子里的.但是今天,客户突然要求实现这样的变色效果,一个区域是灰色的,一个区域是白色的.

原布局效果图

想要达到的效果

我了个擦擦…这是要更换原有的html布局的呀….

思路

首先,我是拒绝更换html布局结构的.我真心不愿意去修改html的布局,因为牵扯到的地方会比较多,所以,如何在不改变html结构的情况下,实现这样的需求呢?

背景图片法

我们可以做一张背景图片,是灰色和白色间隔的,让他在整个网页间平铺.以实现伪装的间隔变色.

优点:不改变DOM结构.

缺点:

1. 要求所有版块高度一致.

2. 不能兼顾头尾.因为不修改html结构,就必然是在body或者html上面加背景图片,这样不能坚固头尾

3. 如果兼顾头尾,则必然还是要修改html结构,必须在所有需要变色的板块外面加上一个100%宽的盒子

好了,综合分析,背景图片貌似不能完美解决我的问题.没关系,我CSS很强大.猛然间我想到了一个牛逼的CSS属性box-shadow.

box-shadow投影法

首先,看下我们现有的html结构

<div class="home">
    <section class="floor"></section>
    <section class="floor"></section>
    <section class="floor"></section>
    <section class="floor"></section>
    <section class="floor"></section>
</div>

默认css如下

.home {width: 1200px;margin: 0 auto;}
    .floor {padding: 20px 0;height: 500px;width: 1200px;}

其他不想干的内容就不写了,主要就是这些参数.

我的解决方案就是,利用box-shadow属性,向左和向右分别加上相当于自身宽度的灰色投影,并且给自己加上灰色背景,这样就实现了整体的变色.代码如下:

.home {width: 1200px;margin: 0 auto;}
    .floor {
        padding: 20px 0;height: 500px;width: 1200px;
        box-shadow: 1200px 0 #fafafa,-1200px 0 #fafafa;
        background: #fafafa;
    }

如上,果不其然,实现了灰色背景的平铺.但是,所有的盒子都有了这个平铺的灰色背景.我们需要实现的是间隔变色,而不是全部变成灰色的背景.

怎么办?难道我需要去给.floor再加上一个样式????

不需要,强大的css再一次雄起了!!

我把代码改成了如下:

.home {width: 1200px;margin: 0 auto;}
    .floor {padding: 20px 0;height: 500px;width: 1200px;}
    .floor:nth-child(2n){
        box-shadow: 1200px 0 #fafafa,-1200px 0 #fafafa;
        background: #fafafa;
    }

OK,完美实现效果.

思考

这个不是100%的平铺的,而是宽度是有限的.这样,在足够高的分辨率下面,可能会产生问题哦.

但是,以我的例子来说,1200*3 = 3600 这样的宽度,足够胜任目前99.999%的显示器了.剩下部分用4K的土豪,我相信也不会在这样高分辨率的显示器上全屏看网页.所以,这样写是没有问题的呀!!

但是,我们是讲求完美的么.哪怕是百万份之一的人会这样做,也不能露怯呀.但是,我们的box-shadow是万能的呀…我们再来改一下代码:

.home {width: 1200px;margin: 0 auto;}
    .floor {padding: 20px 0;height: 500px;width: 1200px;}
    .floor:nth-child(2n){
        box-shadow: 1200px 0 #fafafa,2400px 0 #fafafa,-1200px 0 #fafafa,-2400px 0 #fafafa;
        background: #fafafa;
    }

改成这样之后,就是 1200*5 = 6000 这样的宽度,足够再战10年~~~

小结

CSS,真TM强大!!

本文由FungLeo原创,允许转载.但转载必须署名作者,并保留文章首发链接.否则将追究法律责任.

首发地址:http://blog.csdn.net/FungLeo/article/details/51661222

时间: 2024-08-10 08:45:20

巧用box-shadow实现布局区域间隔变色的相关文章

如何设置box shadow的透明度

(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-04-24) 今天发现使用box-shadow属性,可以很好的给div添加阴影效果,但是添加的效果如果是: -moz-box-shadow:0 4px 4px #999; -webkit-box-shadow:0 4px 4px #999; box-shadow:0 4px 4px #999; 使用#设置的颜色是没有透明效果的.这样设置阴影的颜色,如果阴影落在的位置不是白色的,甚至是动态的,例如落在了幻灯片上,好几张不同颜

box shadow 单边阴影 两边阴影

box-shadow语法:x轴偏移值 y轴偏移值 模糊半径 阴影半径 || 颜色 insect,其中阴影半径可以为负值,意思是增加或减少指定数值的阴影半径 正常阴影 box-shadow: 5px 5px 5px black; 阴影半径为负值  box-shadow: 5px 5px 5px -5px black; 阴影半径为正值 box-shadow: 5px 5px 5px 5px black; 双边阴影 box-shadow: 5px 0px 5px -5px black, -5px 0p

CSS3弹性伸缩布局(上)——box布局

布局简介 CSS3提供了一种崭新的布局方式:Flexbox布局,即弹性伸缩布局模型(Flexible Box)用来提供一个更加有效的方式实现响应式布局. 由于这种布局还处于W3C的草案阶段,并且它分为旧版本.新版本.混合过渡版本三种不同的编码方式.浏览器的兼容性存在一定的问题 首先,我们来看看旧版本的浏览器兼容情况 PS:这是网上的图,浏览器兼容信息可以通过该网站查询:http://www.caniuse.com 开始之前,我们先创建一段内容,分为三个区域 //HTML代码部分 <div> &

布局 html代码示例

 文档流 document flow=> normal flow    本质:普通流/常规流 流:水流 河流... => 自上而下(连续的,连续的    文档:页面主体 文档流:一个连续具有上下逻辑的页面整体    理解:出现在页面中的显示内容,均可以理解为在文档流中(片面的) 概念:将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素    BFC:Block formatting context    概念:由blck-level box 参与布局,同一

CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解

新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 这篇文章最早出现在the April 2012 issue (226)这期的.net杂志上-这杂志是面向网页设计者以及开发者,全球销量最高的杂志. 按照以往来说,用CSS来布局看起来总是一样非常繁杂的工作.然而,随着一个个新标准的推出,网页设计者已经能够实现非常轻松地进行布局工作了. 主流的浏览

为iPhone 6设计自适应布局

Apple从iOS 6加入了Auto Layout后开始就比较委婉的开始鼓励.建议开发者使用自适应布局,但是到目前为止,我感觉大多数开发者一直在回避这个问题,不管是不是由于历史原因造成的,至少他们在心底还坚守着固定布局的老传统思想. 随着iPhone6.iPhone6 Plus的到来,使用自适应布局更是迫在眉睫的事,固定布局的老传统思想脆弱的不堪一击.现在的iPhone有4种尺寸,如果算上iPad,现在Apple的iOS设备有5种尺寸.我们在准备使用自适应布局设计应用界面之前,可以把这5种尺寸划

css实现左右布局

css实现左右布局显示是前端进行页面设计的基础,也是全面了解并学习css一个很好的切入点,因为其中会涉及到对许多css基础点的认知.实现css入门,理解左右布局的实现方式是必经之路,同时也能使我们在项目中涉及前端编码的部分受益. 下面我们就介绍自己总结的7种css实现前端左右布局的方式,如还有其他方式,请告诉我. 1. table---table的li实现 实现原理: table标签是能够具有实现左右布局的属性,也是我们项目中使用最多的.table布局也是页面布局中使用的最早的布局方式,随着前端

为iPhone 6设计自适应布局(iOS8)

Apple从iOS 6加入了Auto Layout后开始就比较委婉的开始鼓励.建议开发者使用自适应布局,但是到目前为止,我感觉大多数开发者一直在回避这个问题,不管是不是由于历史原因造成的,至少他们在心底还坚守着固定布局的老传统思想. 随着iPhone6.iPhone6 Plus的到来,使用自适应布局更是迫在眉睫的事,固定布局的老传统思想脆弱的不堪一击.现在的iPhone有4种尺寸,如果算上iPad,现在Apple的iOS设备有5种尺寸.我们在准备使用自适应布局设计应用界面之前,可以把这5种尺寸划

弹性布局Flex的基本语法

一.Flex的简介 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.用六个字概括弹性布局就是简单.方便.快速. flex( flexible box:弹性布局盒模型),是2009年w3c提出的一种可以简洁.快速弹性布局的属性.主要思想是给予容器控制内部元素高度和宽度的能力.目前已得到以下浏览器支持: 其中在webkit内核的浏览器中使用时,必须加上-webkit-前缀 二.Flex的两个基本概念 (1)容器(flex container