2020-09-23 border

1、border-width

1)、为什么border-width不支持百分比?

答:根据语义和使用场景决定的,即边框不会因为设备大就按比例变大。类似的还有outline, box-shadow, text-shadow...

2)、border-width还支持关键字
  • thin:薄薄的 1px
  • medium:薄厚均匀的 3px(默认值)
  • thick:厚厚的 5px
3)、为何border-width默认值是medium(3px)呢?明明thin(1px)更常用!

因为border-style:double至少3px才有效果

2、border-style

1)、solid 实线
2)、dashed 虚线
  • 兼容性问题(没有实际测试过):


    image.png
3)、dotted 点线(没有实际测试过)
image.png
  • 使用——IE7,IE8 CSS实现圆角


    image.png

    image.png

实际情况测试下,IE跟Chrome都是圆形

4)、 double 双线(兼容性很好)
  • 计算规则
    1px: 0+1+0
    2px: 1+0+1
    3px: 1+1+1
    4px: 1+2+1
    5px: 2+1+2

双线宽度永远相等,中间间隔±1

  • 实例
<style>
    .box {
        width: 300px;
        height: 20px;
        border-top: 60px double;
        border-bottom: 20px solid;
    }
</style>

<body>
    <div class="box"></div>
</body>
image.png
5)、inset 内凹 (现在基本没任何用处)
6)、outset 外凸 (同上)
7)、groove 沟槽 (同上)
8)、ridge 山脊(同上)

上述四种:风格过时 + 兼容性差

3、border-color与color

1)、border-color默认颜色就是color
<style>
    .box {
        border: 10px solid;
        color: #ea6f5a;
    }
</style>
<body>
    <div class="box">我的颜色</div>
</body>
image.png

类似的还有box-shadow,text-shadow,outline等。

2)、有什么用?——精彩案例之:hover与图形变色
  • 传统实现
<style>
    .add {
        width: 100px;
        height: 100px;
        border: 1px solid #ccc;
    }
    .co {
        font-size: 30px;
        color: #ccc;
        text-align: center;
        line-height: 100px;
    }
    .add:hover {
        border-color: #ea6f5a;
    }
    .add:hover .co {
        color: #ea6f5a;
    }
</style>
<body>
    <div class="add">
        <div class="co">+</div>
    </div>
</body>
  • 利用border实现
<style>
    .add {
        width: 100px;
        height: 100px;
        border: 1px solid;
        color: #ccc;
    }
    .co {
        font-size: 30px;
        text-align: center;
        line-height: 100px;
    }
    .add:hover {
        color: #ea6f5a;
    }
</style>
<body>
    <div class="add">
        <div class="co">+</div>
    </div>
</body>
image.png

只要一个color hover变化,就可以一起变色!且transition过渡也只要一个color属性!

4、border与background定位

css2.1时,background只能相对左上角数值定位,不能相对右下角

1)、可以通过border实现相对右下角的定位;
<style>
    .box {
        height: 200px;
        border-right: 50px solid transparent;
        background: url('./img/bs-02.png') no-repeat 100% 40px;
    }
</style>
<body>
    <div class="box"></div>
</body>
image.png

5、border与三角等图形构建

<style>
    .box {
        width: 0px;
        height: 0px;
        border-width: 50px;
        border-style: solid;
        border-color: #ea6f5a #ea6f5a transparent transparent;
    }
</style>
<body>
    <div class="box"></div>
</body>
image.png

为什么边是斜的,因为继承了border-style:inset效果,这也是可以用border实现三角形的根基所在

image.png

image.png
实际应用场景一
<style>
    .wra {
        width: 100px;
        height: 50px;
        position: relative;
    }
    .out {
        width: 0;
        height: 0;
        border-width: 25px 50px;
        border-style: solid;
        border-color: transparent #ea6f5a #ea6f5a transparent;
        position: absolute;
        left: 0;
        bottom: 0;
    }

    .in {
        width: 0;
        height: 0;
        border-width: 15px 50px;
        border-style: solid;
        border-color: transparent #fff #fff transparent;
        position: absolute;
        left: 0;
        bottom: 0;
    }
</style>

<body>
    <div class="wra">
        <div class="out"></div>
        <div class="in"></div>
    </div>
</body>
image.png
模拟圆角
image.png

6、border与透明边框——始于IE7,足够兼容

1)、实例一——优雅增加相应区域大小-复选框
<style>
    .checkbox {
        width: 16px;
        height: 16px;
        border: 2px solid transparent;
        box-shadow: inset 0 1px, inset 1px 0, inset -1px 0, inset 0 -1px;
    }
</style>

<body>
    <div class="checkbox"></div>
</body>

边框使用盒阴影,原先border变透明用来增加点击区域,现在复选框点击区域大小是20px*20px

2)、增加可视渲染区域——drop-shadow可以给png图标赋色(CSS3属性)
.icon { filter: drop-shadow(20px 0 #ff0080); }

但是,Chrome浏览器下:页面中不可见元素的drop-shadow也是不可见的!

  • text-indent负值隐藏原始图,无投影,失败 (对图片使用text-indent负值,不起作用,不知道是浏览器版本原因还是drop-shadow属性的修改)
  • clip剪裁隐藏,无投影,失败 (试过了,不行)
<style>
    body {
        margin: 0;
    }
    .wra {
        width: 160px;
        height: 160px;
        margin: auto;
        overflow: hidden;
    }
    .img {
        width: 160px;
        height: 160px;
        border-right: 20px solid transparent;
        filter: drop-shadow(160px 0 #ea6f5a);
        position: absolute;
        clip: rect(0px, 0px, 0px, 0px);
        
    }
</style>

<body>
    <div class="wra">
        <img src="./img/bs-02.png" alt="" class="img">
    </div>
</body>
  • margin负值隐藏原始图,无投影,失败 (实际测试过可以,不知道是浏览器版本原因还是drop-shadow属性的修改)
  • left负值隐藏原始图,无投影,失败 (实际测试过可以,不知道是浏览器版本原因还是drop-shadow属性的修改)
透明border突破可视区域的限制
<style>
    body {
        margin: 0;
    }
    .wra {
        width: 160px;
        height: 160px;
        margin: auto;
        overflow: hidden;
    }
    .img {
        width: 160px;
        height: 160px;
        border-right: 20px solid transparent;
        filter: drop-shadow(160px 0 #ea6f5a);
        position: relative;
        left: -160px;   
    }
</style>

<body>
    <div class="wra">
        <img src="./img/star.png" alt="" class="img">
    </div>
</body>
image.png

7、border在布局中的应用

1)、应用一:实现左右两栏的登高布局
<style>
   .box {
       border-left: 300px solid #f3f3f3;
   } 
   .left {
       width: 300px;
       float: left;
       margin-left: -300px;
   }
</style>
<body>
    <div class="box">
        <nav class="left">
            <div>导航1</div>
        </nav>
        <section>
            <div class="module">模块1</div>
            <div class="module">模块1</div>
            <div class="module">模块1</div>
            <div class="module">模块1</div>
            <div class="module">模块1</div>
        </section>
    </div>
</body>
image.png

局限性:不支持百分比宽度(因为border不支持百分比)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354