zoukankan      html  css  js  c++  java
  • 《CSS揭秘》 |背景与边框

    本章例子:https://codepen.io/sanhuamao1/pen/YzNOZqY

    1 透明边框

    你可能会这样写:

    border: 10px solid hsla(0,0%,100%,.5);
    background: white;
    

    然而,半透明白色边框处透出了自己的纯白实色背景,而并没有半透明效果。下面的写法会让背景限制在内边框(padding)内,让实色背景不影响半透明边框(border)。

    border: 10px solid hsla(0,0%,100%,.5);
    background: white;
    background-clip: padding-box;
    

    指定背景绘制区域:
    background-clip: border-box|padding-box|content-box;

    • border-box 默认值。背景绘制在边框方框内(剪切成边框方框)。
    • padding-box 背景绘制在衬距方框内(剪切成衬距方框)。
    • content-box 背景绘制在内容方框内(剪切成内容方框)

    2 多重边框

    box-shadow

    box-shadow它支持逗号分隔语法,所以可以创建任意数量的投影。它们是层层叠加的,第一层投影位于最顶
    层,依次类推。因此,你需要按此规律调整扩张半径:

    background: antiquewhite;
    box-shadow: 0 0 0 10px #655, 0 0 0 15px deeppink;
    

    【注意】投影跟边框不完全一致,因为它不会影响布局,也不会受到 box-sizing 属性的影响。当然,你可以通过内边距或外边距来额外模拟出边框所需要占据的空间。 上述方法所创建出的假“边框”出现在元素的外圈。它不会响应鼠标事件;你可以给box-shadow 属性加上 inset 关键字,来使投影绘制在元素的内圈


    盒子阴影:box-shadow: h-shadow v-shadow blur spread color inset;

    • h-shadow 必需的。水平阴影的位置。允许负
    • v-shadow 必需的。垂直阴影的位置。允许负值
    • blur 可选。模糊距离
    • spread 可选。阴影的大小
    • color 可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表
    • inset 可选。从外层的阴影(开始时)改变阴影内侧阴影

    outline

    你可能只需要两层边框,那只需先设置一层常规边框,再加上 outline(描边)来产生第二层的边框。

    background: antiquewhite;
    border: 10px solid #655;
    outline: 5px solid deeppink;
    

    此外,boxshadow只能模拟实现边框,而outline更灵活,可配合outline-offset实现缝边效果:

    background: #655;
    outline: 1px dashed white;
    outline-offset:-8px;
    border:15px solid #655;
    

    【注意】:

    • 它只适用于双层“边框”的场景
    • 边框不一定会贴合 border-radius 属性产生的圆角

    3 背景定位

    背景定位

    background-position

    background: url("tree.png") no-repeat #58a;
    background-position: right 20px bottom 10px; /*指定偏移位置*/
    

    当偏移量与容器的内边距一致。如果使用position,那么会写成这样。这样写不太ok,因为每次改动内边距时,都需要在三个地方更新这个值:

    padding: 10px;
    background: url("tree.png") no-repeat #58a;
    background-position: right 10px bottom 10px;
    

    background-origin

    上面的问题可以由这个属性解决。让它自动地跟着我们设定的内边距走,不用另外声明偏移量的值:

    padding: 10px;
    background: url("tree.png") no-repeat #58a bottom right; /* 或 100% 100% */
    background-origin: content-box;
    

    calc()

    background: url("tree.png") no-repeat #58a;
    background-position: calc(100% - 20px) calc(100% - 10px);
    

    4 边框内圆角

    一般情况下我们可能要创建两个元素实现该效果,现可尝试以下办法:

    background: tan;
    border-radius: .8em;
    box-shadow: 0 0 0 .6em #655; /*会继承圆角*/
    outline: .6em solid #655;/*填补圆角空隙 使成为矩形*/
    
  • 相关阅读:
    My SQL
    弹窗
    DBDA
    ThinkPHP验证码与文件上传
    ThinkPHP表单验证
    ThinkPHP增删改
    ThinkPHP模型(查询)
    ThinkPHP跨控制器调用方法
    Superset安装
    Presto资源组配置
  • 原文地址:https://www.cnblogs.com/sanhuamao/p/14677013.html
Copyright © 2011-2022 走看看