outline和outline-offset属性实现简单的缝边效果

  如果现在有个需求,让你实现下面的样式,你会怎么做呢?

  

  我首先想到的是用 border + box-shadow 实现,代码如下

                div {
                margin: 50px auto;
                width: 200px;
                height: 100px;
                background: #655;
                border-radius: 5px;
                border: 1px dashed #fff;
                box-shadow: 0 0 0 10px #655;
            }        

    当时,我个人认为没有其它方法可以实现了,直到后面在《css揭秘》一书当中看到了另外的方法,顿时豁然开朗

   这个方法是用 css的 outline + outline-offset 属性来实现的

   下面,我用自己的理解来说说这个2属性是什么,因为官方的解释对不熟悉这2个属性的人来说会有点懵

  简单来说,outline属性等同于border,都可以绘制边框,可以看作是一条始终包裹在border外的边框,如下图

  如上图,棕色是border,桃红色是 outline,只要border和outline属性同时作用于同一个元素,outline绘制的边框始终会在border外面

    另外,如果你想给一个元素增加一条边框,使用 outline 或 border 都可以

   

  在来说说outline-offset属性,可以简单理解为控制outline绘制的边框和border边框之间的距离,如下图

  

  另外,outline-offset属性还可接收负值,正是这个特性,让我们能够实现缝边的效果,代码如下

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            div {
                margin: 50px auto;
                width: 200px;
                height: 100px;
                background: #655;
                border-radius: 5px;
                outline: 1px dashed #fff;
                outline-offset: -15px;
            }
        </style>
    </head>

    <body>
        <div></div>
    </body>

</html>

  

  

  

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

时间: 2025-01-12 14:31:24

outline和outline-offset属性实现简单的缝边效果的相关文章

js的nextSibling属性用法简单介绍

js的nextSibling属性用法简单介绍:此属性可以返回当前节点的下一个同级节点.如果下一个同级节点不存在,则此属性返回值是null.语法结构: elementNode.nextSibling 代码实例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softw

nextSibling属性用法简单介绍

js的nextSibling属性用法简单介绍:此属性可以返回当前节点的下一个同级节点.如果下一个同级节点不存在,则此属性返回值是null.语法结构: elementNode.nextSibling 代码实例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softw

VBA学习笔记之Range.Offset属性

'Range.Offset 属性'返回 Range 对象,它代表位于指定单元格区域的一定的偏移量位置上的区域.'表达式.Offset(偏移行, 偏移列)'表达式 一个代表 Range 对象的变量.'偏移行列的数字可以是:正数,负数,零值 1 Sub test() 2 [a1].Offset(1, 2).Select '行列都偏移 3 [a1].Offset(2).Select '只偏移行 4 [a1].Offset(, 2).Select '只偏移列 5 6 '如果offset前面的range对

C# - 创建List属性的简单方法

不用担心List没有创建问题. private ObservableCollection<EquipmentItem> _optionalCollection; public ObservableCollection<EquipmentItem> OptionalCollection { get { if (this._optionalCollection == null) { this._optionalCollection = new ObservableCollection&

js的table表格对象的rows属性用法简单介绍

js的table表格对象的rows属性用法简单介绍:rows作用正如其拼写一样,是用来获取一个行的集合,也就是表格中行的集合.代码如下: <!DOCTYPE html><html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁部

属性动画简单分析(二)

在<属性动画简单解析(一)>分析了属性动画ObjectAnimation的初始化流程: 1)通过ObjectAnimation的ofXXX方法,设置propertyName和values. 2)将propertyName和values封装成PropertyValueHolder对象:每个PropertyValueHolder对象持有values组成的帧序列对象KeyFrameSet对象: 3)将步骤2创建的PropertyValueHolder对象用ObjectAnimation的mValue

HTML5的autofocus属性用法简单介绍

HTML5的autofocus属性用法简单介绍: 本章节简单介绍一下HTML5中新增的一个属性autofocus,它可以让一个元素加载后获取焦点,在此之前一般要通过使用javascript的focus()方法实现我们的要求,非常的简单,代码如下: <input type="text" autofocus="autofocus" /> <textarea autofocus="autofocus">蚂蚁部落</text

javascript三大家族:offset属性 scroll属性 client属性

(1)offset属性:1.1 offsetWidth = width + border + padding1.2 offsetHeight = height + border + padding1.3 offsetTop = 元素相对于浏览器顶部的距离1.4 offsetLeft = 元素相对于浏览器左边的距离功能:只读(获取)不写(设置)1.5 子元素的offsetTop和offsetLeft:关键看父元素是否设置了定位,若有则相对于父元素的上边框和左边框的距离:若没有则相对于浏览器顶部和左

简单的抽屉效果

简单的抽屉效果是由3 个View 组成,顶层默认显示的mainV,左边的leftV以及右边的rightV ,当mainV 监听到滑动时,计算滑动的偏移量,控制显示leftV或者rightV. 废话不多说,上代码. 一:所以,首先我们需要在头文件中定义三个View的属性,来给外界调用,实现设置对应的属性和效果: 1 @property (nonatomic, weak, readonly) UIView *mainV; 2 3 @property (nonatomic, weak, readonl