CSS揭秘—多重边框(二)

  前言:

    所有实例均来自《CSS揭秘》,该书以平时遇到的疑难杂症为引,提供解决方法,只能说秒极了,再一次刷新了我对CSS的认知

   该书只提供了关键CSS代码,虽然有在线示例代码链接,但访问速度较慢。下面示例代码是我自己写的,若有错误,欢迎指正

   注:我会在每个示例最后附上书中提供的在线示例代码链接;在最开头附上每个相关示例所需CSS属性链接作为补充,以供查阅和学习

  CSS需知:

    box-shadow

    outline

  场景:

    如果让你实现下图多重边框的效果,你会怎么做呢?

    

    可能聪明的你首先想到利用 outline 属性来实现,如下代码

      div {
                margin: 50px auto;
                width: 200px;
                height: 200px;
                background: yellowgreen;
                border: 10px solid #655;
                outline: 10px solid deeppink;
            }

    如果你还想加上阴影效果,使用box-shadow 属性即可,

    box-shadow: 10px 10px 5px 10px rgb(0,0,0,.5);

    

   

  问题: 

   现在有个问题,如果多重边框像上面一样只有2重,那使用 outline 属性是没有问题的。

    但如果是3重,4重,甚至更多重边框的情况就行不通了,如下图,3重边框

   

  

  

    解决方法:

    上面问题只需用 box-shadow 属性,即可迎刃而解。

    box-shadow支持逗号分隔,比如像下面这样,想加几个边框就加几个,用逗号分隔开就行

box-shadow: 0 0 0 10px #655, 0 0 0 20px deeppink, 0 0 0 30px brown;

    注:这里要注意 box-shadow的第四个属性,表示阴影的大小(就是上面代码的10px,20px,30px)

       如果你想要添加多条边框,就需要把阴影大小的值依次递增,否则无效

 box-shadow: 0 0 0 10px #655, 0 0 0 20px deeppink,0 0 0 30px brown, 10px 10px 5px 30px rgb(0, 0, 0, .5);

    注:如果你还要添加阴影效果,也需要把阴影大小的值进行调整,只能 >= 你设置的最后一条边框的阴影大小值

       比如上面代码中的3条边框阴影大小值分别为,10px,20px,30px,那后面阴影的值只能设置30px,或比30px大

  DEMO

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div {
                margin: 50px auto;
                width: 200px;
                height: 200px;
                background: yellowgreen;
                box-shadow: 0 0 0 10px #655, 0 0 0 20px deeppink,0 0 0 30px brown, 10px 10px 5px 30px rgb(0, 0, 0, .5);
            }
        </style>
    </head>

    <body>

        <div></div>
    </body>

</html>

  书中提供的在线示例链接:http://dabblet.com/gist/012289cc14106a1bd7a5

原文地址:https://www.cnblogs.com/tu-0718/p/10281172.html

时间: 2024-10-08 10:17:17

CSS揭秘—多重边框(二)的相关文章

CSS实现多重边框和内凹圆角

CSS实现多重边框 1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS实现多重边框</title> 6 <style> 7 div { 8 width: 100px; 9 height: 150px; 10 margin: 40px auto; 11 text-a

【基础】CSS实现多重边框的5种方式

原文:[基础]CSS实现多重边框的5种方式 简言 目前最优雅地实现多重边框的方案是利用CSS3 的 box-shadow属性,但如果要兼容老的浏览器,则需要选择其它的方案.本文简要地列举了几种多重边框的实现方案,大家可以根据项目实际及兼容性要求等情况,选择最适合的实现方案. 1 利用描边(outline)属性 方案1利用描边(outline)属性结合border属性实现双重边框.此方案实现简单,兼容性好,能兼容除IE6,7以外的浏览器. 1.1 核心代码 .borders { border: s

[css 揭秘]:CSS揭秘 技巧(二):多重边框

我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在这上面哦! 喜欢的给我一个星吧 多重边框 问题:我们通常希望在css代码层面以更灵活的方式来调整边框样式 方案一:box-shadow 目前为止,我们大多数人可能已经用过(或者滥用过)box-shadow来生成投影,不太为人之的是,它还接受四个参数(扩张半径),通过制定正值或负值,可以让投影面积加大或者减小, 用它的好处是它支持逗号分隔语法,我们可以创建任意数量的投影 知识背景:box-s

[CSS揭秘]半透明边框

技巧:实现一个半透明的边框 补充说明:博客园的编辑器把内联样式里带-分隔符的CSS属性都删掉了,所以页面效果看不到半透明边框. 预备知识 background-clip background-clip 设置元素背景是否延伸到边框下面,如果没有设置背景颜色或者图片,那么这个属性只有在边框设置为透明或者半透明时才能看到视觉效果.否则这个属性造成的样式变化会被元素边框所覆盖. 默认值为 border-box 没有继承性,也不适用于CSS动画.取值范围 border-box; padding-box;

[css]《css揭秘》学习(二)-多重边框

一.box-shadow属性 box-shadow除了生成投影,还可以用来生成边框:它接受第4个值作为扩张半径,0的x轴偏移+0的y轴偏移+0的模糊值+0的扩张半径,得到的显示效果和边框是一样的:但是注意,投影的行为和边框的行为不同,投影不影响布局:“假”边框在元素外面,不影响元素的点击(可以给box-shadow属性加上inset元素,来投影到原色内部). 1 <html> 2 <head> 3 <meta charset="utf-8"> 4 &

[CSS揭秘]边框内圆角

技巧:通过一个DIV标签实现边框内圆角效果 背景知识:box-shadow, outline, "多重边框" 补充说明:博客园的编辑器把我写的border-radius属性给删掉了,所以看到的页面效果里没有圆角. 实现效果:一个容器的边框或者描边的四个角,在内部是有圆角的,而在外部依然保持直角的形状. 实现思路一:通过两个DIV嵌套可以实现 .outer{ background: #655; padding: 0.8rem; } .inner{ background: tan; bor

[css 揭秘]:CSS揭秘 技巧(四):边框内圆角

我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在这上面哦! 喜欢的给我一个星吧 边框内圆角 问题:有时候我们需要一个容器,只在内侧有圆角,而边框或描边的四个角在外部仍然保持直角的形状. 其实,以前我都是用两个div实现的. 解决方案 如果只需要达成简单的实色效果,我们还可以通过其他的方法. 描边 并不会跟着元素的圆角走(因而可以实现外层是直角),box-shadow 却是会的,因此把两者叠加到一起,box-shadow 会刚好填补 描边

css揭秘--笔记(未完)

第0章 关于本书 1, 本书要用到一个工具函数————$$(),它可以让我们更容易获取和遍历所有匹配特定css选择符的dom元素: 1 function $$(selector,context){ 2 context=context||document; 3 var elements=context.querySelectorAll(selector); 4 return Array.prototype.slice.call(elements); 5 } 2, 以下实现一个效果: 1 linea

[CSS揭秘]平行四边形

技巧:通过变形属性对容器的形状进行变形,但是保持其内容不变形. 场景:通过skew()变形属性对一个按钮形状的平行四边形进行斜向拉伸. 有几套备选方案: 1. 嵌套元素方案 外部容器元素进行skew()变形,再对内部内容区域元素进行一次反向的skew()变形,这样内容区域会保持原来的形状. 2. 伪元素方案(二个) 通过在元素两边添加两个三角形的伪元素来拼接实现一个斜向拉伸的平行四边形. 3. 伪元素方案(一个) 把所有的样式(背景,边框等)都应用到伪元素之上,而且对伪元素进行变形. 这个技巧适