css之border&三角形

1.border-width不支持百分比。那样不符合语义。同理,outline、box-shadow、text-shadow也不支持百分比
2.border-width支持关键字,thin(1px)、medium(3px)(默认)、thick(5px)
3.border-style为double要大于等于3px,才能有效果。3像素时1+1+1,4像素时1+2+1。
4.border-style:solid(实线)、dashed(虚线)、dotted(方点或圆点)、double(双线)
5.border-style为double的应用:菜单图标

#box{
    width: 100px;
    height: 20px;
    border-top: 60px double;
    border-bottom:20px solid;
}

这里写图片描述
6.border-style为inset,内凹;outset,外凸;groove,沟槽;ridge,山脊。没人用,不符合审美,兼容性差。
7.border-color:没有指定border-color时,使用文字的color作为边框的颜色值。同理。box-shadow、text-shadow、outline没有指定颜色时,使用文字的color作为颜色值。
8.border-color的应用
传统方法:代码复杂

<div id="box"></div>
#box{
    width: 100px;
    height: 100px;
    border:1px solid #ccc;
    position: relative;
}
#box:before{
    content: '';
    width: 10px;
    height: 60px;
    background-color: #ccc;
    position: absolute;
    left: 50%;
    top:50%;
    margin-left: -5px;
    margin-top: -30px;
}
#box:after{
    content: '';
    height: 10px;
    width: 60px;
    background-color: #ccc;
    position: absolute;
    top:50%;
    left: 50%;
    margin-top: -5px;
    margin-left: -30px;
}
#box:hover{
    border-color:blue;
}
#box:hover:before{
    background-color: blue;
}
#box:hover:after{
    background-color: blue;
}

新方法:不指定边框颜色,指定字体颜色

        #box{
            width: 100px;
            height: 100px;
            color:#ccc;
            border:1px solid;
            position: relative;
            transition:color 1s;//设置渐变

        }
        #box:before{
            content: '';
            height: 60px;
            border-left:6px solid;
            position: absolute;
            left: 50%;
            top:50%;
            margin-top: -30px;
            margin-left: -3px;

        }
        #box:after{
            content: '';
            width: 60px;
            border-top: 6px solid;
            position: absolute;
            top:50%;
            left: 50%;
            margin-left: -30px;
            margin-top: -3px;
        }
        #box:hover{
            color:blue;
        }

这里写图片描述
这里写图片描述
9.border与background定位
background-position是让背景图片相对左上角固定定位。

background-position:50px 40px;

如何让背景图片相对右上角固定定位?可以借助border来实现。background-position的计算是不包括border区域的,是相对padding盒子的。

{
border-right:50px solid transparent;
background-position:100% 40px;
}
//这样就能让背景图片相对右边50px定位

10.border与三角形、梯形

{
    width:100px;//中间白色正方形的宽
    height:100px;//中间白色正方形的高
    border:50px solid;
    border-color:orange red green blue;
}

这里写图片描述

{
    width:0px;//中间白色正方形的宽
    height:0px;//中间白色正方形的高
    border:50px solid;
    border-color:orange red green blue;
}

这里写图片描述
只要让某些边透明,就能构造不同的三角形。

border-color:orange transparent transparent blue;

这里写图片描述

//梯形
{
width: 40px;
height: 40px;
border: 50px solid;
border-color:orange transparent transparent transparent;
}

11.border与透明边框–用途很广
实现好看的单、复选框,优雅的增加响应区域大小:
当点击有for属性的label标签时,对应的Checkbox复选框会被选中。这意味着,我们可以通过label的点击事件来处理我们的Checkbox复选框。

#checkbox{
   visibility: hidden;
}
.checkbox{
  display: block;
  width: 16px;
  height: 16px;
  border:2px solid transparent;//透明边框增大响应区域
  box-shadow: inset 0 1px,inset 1px 0,inset -1px 0,inset 0 -1px;//多阴影
  background-color: #fff;
  background-clip:content-box;//使背景颜色只在内容区域
  color:#d0d0d5;
}
#checkbox:checked + label{
    background-color: red;
}
<div>
    <input type="checkbox" id="checkbox">
    <label for="checkbox"  class="checkbox"></label>
</div>

drop-shadow给png图标赋色:
filter: drop-shadow(x偏移, y偏移, 模糊大小, 色值);
webkit-filter:drop-shadow(x偏移, y偏移, 模糊大小, 色值);

.icon{
    filter: drop-shadow(40px 0px red);
    -webkit-filter: drop-shadow(40px 0px red);
}
<img src="1.png" class="icon"height="25" width="33" alt="" >

这里写图片描述
右边红色的图标是绘制出来的。这样,只要将左边的图标隐藏起来,只留下右边图标,就能实现图标颜色变化。但是不在可视区域内的元素是没有投影的。这时候就要借助透明边框。

.wrap{
    overflow: hidden;
    width: 33px;
    height: 25px;
}
.icon{
    position: relative;
    left: -33px;
    border-right: 33px solid transparent;//加上边框,使得img的一部分仍然在可视区域内
    filter: drop-shadow(33px 0px red);
    -webkit-filter: drop-shadow(33px 0px red);
}
<div class="wrap">
    <img src="1.png" class="icon"height="25" width="33" alt="" >    
</div>

12.border与布局
等高布局:左边栏高度增大,右边栏高度也跟着增大;右边栏高度增大,左边栏高度也跟着增大

 #box{
    border-left: 300px solid #222;//利用边框的高度肯定跟背景一样高来实现
    background-color: #ccc;
}
#left{
    float: left;
    width: 300px;
    margin-left: -300px;
}
h3{
    color: #fff;
}
.clearfix{
    *zoom:1;
}
.clearfix:after{
    content: "";
    display: table;
    clear: both;
}
<div id="box" class="clearfix">
  <nav id="left">
        <h3>标题1</h3>
        <h3>标题1</h3>
    </nav>
    <section>
        <div>模块1</div>

    </section>
</div>

局限:边框不支持百分比宽度。

利用margin/padding实现等高布局:

#box{
   background-color: #ccc;
    overflow: hidden;
}
#left{
    float: left;
    width: 50%;
    background-color: #333;
    margin-bottom: -600px;//margin-bottom 给一个很大的负值,再用padding填充回来。
    padding-bottom: 600px;
}
h3{
    color: #fff;
}
section{
    overflow: hidden;
}

局限:如有锚点定位会飞上去

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值