zoukankan      html  css  js  c++  java
  • 边框

    一、为何border-width不支持百分比值
    个人理解,border-width是根据 语义和使用场景决定的。 不会因为设备大就按比例变大的。
    border-width还支持关键字:thin 1px,medium(默认值) 3px,think 5px

    为何border-width默认值是medium(3px)呢?明明thin(1px)更常用!因为border-style:double至少3px才有效果

    那么border-style:double是什么鬼,平时都没怎么用过

    二、border-style类型
    border-style:solid; 实线,很熟的,pass~~
    border-style:dashed; 虚线, 挺熟,pass~~
    border-style:dotted; 点线, 不熟,但有故事,ie,火狐的表现不一样,形状不一样
    border-style:double; 双线,非常不熟,但有故事
    双线宽度永远相等,中间间隔正负1。
    1px: 0+1+0
    2px: 1+0+1
    3px: 1+1+1
    4px: 1+2+1
    5px: 2+1+2
    6px: 2+2+2
    7px: 2+3+2
    这个双线对我们实际布局有什么用呢?很有用的,因为兼容性非常好,可以用来绘制图形。
    <style>
      div{
        width: 120px;
        height: 20px;
        border-top:60px double;
        border-bottom: 20px solid;
      }
    </style>
    <body>
      <div></div>
    </body>
    比如这个,三等分,移动端非常常见。点击展开,点击收起。不需要伪元素,不需要图标,是不是很有意思,赶紧拿笔记下来
    border-style:inset; 内凹,大眼瞪小眼,非常鸡肋,基本上没什么卵用,兼容性还差,毫无价值
    border-style:outset; 外凸,大眼瞪小眼,非常鸡肋,基本上没什么卵用,兼容性还差,毫无价值
    border-style:groove; 沟槽,大眼瞪小眼,非常鸡肋,基本上没什么卵用,兼容性还差,毫无价值
    border-style:ridge; 山脊,大眼瞪小眼,非常鸡肋,基本上没什么卵用,兼容性还差,毫无价值

    三、border-color与color
    border-color就是color。更准确的讲,border-color默认颜色就是color.
    <style>
      div{
        border: 5px solid;
        color:pink;
      }
    </style>
    <body>
      <div>It is never too old to learn</div>
    </body>
    字体颜色是什么,border-color默认颜色就是什么。当没有指定border-color的时候,会使用color作为边框色!

    这个特性有什么用呢?没什么用,当今iconfont横行的时候,没用,哈哈哈哈

    四、border与三角等图形构建
    利用solid构建三角和梯形。
    <style>
      div{
        width: 0px;
        border-width: 12px 20px;
        border-style: solid;
        border-color:red red transparent transparent;
      }
    </style>
    <body>
      <div></div>
    </body>
    非常朴实和有用,没有兼容性,原理是什么。
    <style>
      .test2{
        width: 100px;
        height: 100px;
        border: 100px solid;
        border-color: red green blue orange
      }
    </style>
    <body>
      <div class="test2"></div>
    </body>
    发现四个角都是规则的45度,正好一切为2。所以要实现梯形就很简单,把边隐藏掉。

    那么为什么边框的边缘是这样斜过来的。是巧合么。不是巧合,前面不是有什么inset,outset,groove,ridge等。这是更正一下,它们并不是一无是处,如果要做这样凹陷的效果,他的边缘就必须是斜过来的。这样才会是个凹槽,3d效果,于是乎,在设置border的时候,就继承过来了。这就是实现三角的根基所在。往下,往上,往左,往右,斜着的,随便玩

    实际应用场景
    1)下拉,消息框,tip的那种三角
    2)模拟圆角(不使用css3,兼容性好)


    五、border与透明边框
    透明边框很有用,运用很广,而且兼容性很好。
    1)三角
    2)增加可视渲染区域
    <style>
      .wrap{
        width:32px;
        height: 32px;
        overflow: hidden;
      }
      .icon{
        position: relative;
        left: -32px;
        border-right: 32px solid transparent;
        filter: drop-shadow(32px 0 red);
      }
    </style>
    <body>
      <div class="wrap">
        <img class="icon" src="imgs/message.png" width="32px" alt="">
      </div>
    </body>
     
    边框的属性:线型 大小 颜色
    边框背景图
    边框衔接(三角形)
     
     
    边框的属性
    <style>
      .c1 {
        width: 400px;
        height: 200px;
        border: 1px solid red;
      }
    </style>
    <body>
      <div class="c1">
    </div>
    </body>

    如右侧样式,这里是组合在一起写的,其实里面包含了color,style,width。



    背景图片
    border.png

     经典的九宫格,适合与九宫格

    <style>
      .c2 {
        width: 400px;
        height: 200px;
        border: 30px solid transparent;
        border-image: url('border.png') 30;
      }
    </style>
    <body>
      <div class="c2">
      </div>
    </body>

     

    但这个不是我们想要的结果,我们想要的结果是中间的黄色方形是平铺的效果,我们将border-image改成
    border-image: url('border.png') 30 repeat;

     这个跟我们想要的结果接近了。但是边上还是有一点问题,并不是完整的填充。那我们将border-image改成

    border-image: url('border.png') 30 round;

    这个结构几乎就跟预想中的一样了。round是怎么拼的,它会去空间上进行压缩,成为整图



    边框衔接(三角形)
    <style>
      .c3 {
        width: 400px;
        height: 200px;
        border-bottom: 30px solid red;
        /* border-left: 30px solid transparent;
        border-right: 30px solid transparent; */
      }
    </style>
    <body>
      <div class="c3">
      </div>
    </body>

     

    现在有一个30px的底边,这个时候我们给右边加个蓝色 border-right: 30px solid blue; 那么她们衔接的时候是怎么样的呢。
    可以看到是斜切下来的样式。那如果是斜切下来的话。如果右边改成透明色会怎么样。把上面的注释放开,
    <style>
      .c3 {
        width: 400px;
        height: 200px;
        border-bottom: 30px solid red;
        border-left: 30px solid transparent;
        border-right: 30px solid transparent;
      }
    </style>
    <body>
      <div class="c3">
      </div>
    </body>

     

    这样就变成了一个梯形。我们看到上面边框是盒子的宽度。如果盒子区域的宽度把它去掉。那么它就变成了三角形

    <style>
      .c3 {
        width: 0px;
        height: 200px;
        border-bottom: 30px solid red;
        border-left: 30px solid transparent;
        border-right: 30px solid transparent;
      }
    </style>
    <body>
      <div class="c3">
      </div>
    </body>

     

    当我们宽度变成0的时候。它就变成了一个三角形。那这个就是用边框实现三角形的办法。


    这个时候我们给边框加个圆角会怎么样,在c3样式中添加
    border-radius: 30px;

    这个时候变成了一个扇形。这是第三个点,如何用边框实现一个三角形。

     
  • 相关阅读:
    解决Cannot change version of project facet Dynamic web module to 3.0
    mysql 存储过程
    查看建表语句
    mysql query cache 查询缓存
    数据库连接池
    JDBC Statement PrepareStatement
    mysql 改变表结构 alter
    maven 获取pom.xml的依赖---即仓库搜索服务
    windows常用快捷键
    oracle 的数据完整性
  • 原文地址:https://www.cnblogs.com/wzndkj/p/10328646.html
Copyright © 2011-2022 走看看