zoukankan      html  css  js  c++  java
  • css技巧

    一、设置等宽的表格

    table-layout: fixed;
    • table设置宽,则每列平分table的宽

    示例

    <style>
    table{
    table-layout: fixed;
    border-collapse: collapse;
    200px;
    }
    tr,td{
    border: 1px solid #eee ;
    }
    </style>
    <table>
    <thead>
    <tr>
    <td>三个字</td>
    <td>八字八字八字八字</td>
    </tr>
    <tr>
    <td>六个字六个字</td>
    <td>六个字六个字</td>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>两字</td>
    <td>两字</td>
    </tr>
    <tr>
    <td>六个字六个字</td>
    <td>六个字六个字</td>
    </tr>
    </tbody>
    </table>

    二、flexbox 布局

    智能计算padding

    .parent{
      display: flex;
      justify-content: space-around;//center,flex-start,flex-end,space-around,子项目在主轴上的对齐方式
      align-items: center;//flex-start,flex-end,stretch,baseline,子项目在交叉轴上的对齐方式
      .child{
        flex: 0 1 auto;//flex-grow,flex-shrink,flex-basis的简写
      }
    }

    容器属性(CSS的columns在伸缩容器上没有效果)

    • flex-direction: row | row-reverse | column | column-reverse;
    • flex-wrap: nowrap | wrap | wrap-reverse;
    • flex-flow: flex-direction 和 flex-wrap的简写形式
    • align-content: 定位多根轴线的对齐方式。flex-start | flex-end | center | space-around | space-between | stretch

    项目属性(float、clear和vertical-align在伸缩项目上没有效果)

    • order: 定义项目的排列顺序。数值越小,排列越靠前,默认为0。
    • align-self: 允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。auto | flex-strat | flex-end | center | baseline | stretch

    这个属性有兼容性问题,详见此页面的Known issues。如果使用的话建议配合autofixer,觉得npm麻烦,gulp-autofixer一样的。以下是我根据gulp-autofixer编译过来的

    .flex-justify {
        display: flex;
        /*子项目主轴*/
        justify-content: space-between;
        /*子项目交叉轴*/
        align-items: center;
    }

    编译后:

    .flex-justify{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}

    三、ntn-child使用负数选择项目

    <style>
    li:nth-child(-n+3){
        background: yellow;
    }
    </style>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>

    选取到前三个li

    三、calc()使用

     calc(100% - 30px);

    在less中使用会解析成 calc(70%),可以用 ~ 避免less编译:

     calc(~"100% - 30px");

    四、sticky使用

    css3新增的position值,表现吸顶效果

    position: sticky;
    top: 0px;

     五、文字+图标居中简便方法

    <style>
      .outer{
        width: 500px;
        height: 100px;
        display: table;
        border:1px solid #eeeeee;
      }
      .inner{
        text-align: center;
        display: table-cell;
        vertical-align: middle;
      }
    </style>
    <div class="outer">
        <div class="inner">
            <img src="//www.baidu.com/img/baidu_jgylogo3.gif" alt="" width="10px" height="10px" />
            文字+图标居中
        </div>
    </div>

     六、三角形(向上的带颜色箭头)

    .arr{
        width:0px;
        height:0px;
        border-left:1px dashed transparent;
        border-right:1px dashed transparent;
        border-top:1px solid color;
    }

     七、禁止浏览器放大字体(使用QQ浏览器x5内核和微信浏览网页时会修改字体大小)

    html{-webkit-text-size-adjust:100%;}

     八、使用浮动做三栏布局 来源

    <div class="container1">
      <div class="item left">left:  100px</div>
      <div class="item right ">right  100px</div>
      <div class="item center ">中间宽度自定义</div>
    </div>
    <style>
      .container1 {
        height: 100px;
        border: 1px solid #000;
      }
      .item {
        height: 100%;
        border: 1px solid red;
      }
      .left{
        float: left;
         100px;
      }
      .center {
        margin: 0 100px;
         auto;
      }
      .right {
        float: right;
         100px;
      }
    </style>

    九、弹框蒙版

    使用position四边定位强制拉伸,然后设置margin:auto;

    .pop{
      position:fixed;
      left:0;
      right:0;
      top:0;
      bottom:0;
      margin:auto;    
    }

    如果设置元素的宽高,那么,这个元素居中啦!

    不设置的话就会铺满整个屏幕。

    十、使用box-shadow/text-shadow

        box-shadow: 0 0 9px 3px rgba(255, 179, 252, .5) inset, 0 0 9px 3px rgba(255, 179, 252, .5), 0 0 0 1px #ffb3fc, 0 0 0 1px #ffb3fc inset;
        border-radius: 100px;
        border: 2px solid #fff;
         134px;
        height: 34px;
        text-shadow: 0 0 5px #ffb3fc, 0 0 10px #ffb3fc, 0 0 15px #ffb3fc, 0 0 1px #ffb3fc;
        color: #fff;

    十一、利用table做弹框居中( used in vuejs)

    .modal-mask {
      position: fixed;
      z-index: 9998;
      top: 0;
      left: 0;
       100%;
      height: 100%;
      background-color: rgba(0, 0, 0, .5);
      display: table;
      transition: opacity .3s ease;
    }
    
    .modal-wrapper {
      display: table-cell;
      vertical-align: middle;
    }

    十二、display:none和display:block毁坏animation(具体是transition)的问题

    情况:js判断是否为微信打开网页,if(true){.show()};在safari中显示元素的transition失效;

    查阅资料 show是修改display:“”,不能transition:

    function showHide( elements, show ) {
        var display, elem,
            values = [],
            index = 0,
            length = elements.length;
        for ( ; index < length; index++ ) {
            elem = elements[ index ];
            if ( !elem.style ) {
                continue;
            }
            display = elem.style.display;
            if ( show ) {
                if ( display === "none" ) {
                    values[ index ] = dataPriv.get( elem, "display" ) || null;
                    if ( !values[ index ] ) {
                        elem.style.display = "";
                    }
                }
                if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
                    values[ index ] = getDefaultDisplay( elem );
                }
            } else {
                if ( display !== "none" ) {
                    values[ index ] = "none";
                    dataPriv.set( elem, "display", display );
                }
            }
        }
        for ( index = 0; index < length; index++ ) {
            if ( values[ index ] != null ) {
                elements[ index ].style.display = values[ index ];
            }
        }
    
        return elements;
    }

    解决:使用opacity:0;js判断使用.css("opacity","1");opacity允许过渡。

    十三(10.25)、在table中实现head不动body超出滚动(当然使用div模拟也行),我用一个table实现

    .table table tbody {
        height: 360px;
        overflow-y: scroll;
      display:block; } .table table tbody tr { border-bottom: 1px solid #dcdcdc; } .table table thead, .table tbody tr { display: table; width: 100%; table-layout: fixed; }

    有个问题就是使用了table-layout之后就不能给td单独设宽。如果设计的时候tr文字内容相差较多就不适用了,可以使用两个table。

  • 相关阅读:
    nodejs+express安装
    C++操作MySQL大量数据插入效率低下的解决方法
    代码中出现一个类似空格的东西---不间断空格
    java使用compareTo报Comparison method violates its general contract 异常
    实现dev双柱图
    DB2登录示例数据库
    DB2 报错:CLI0111E 数值超出范围。 SQLSTATE=22003
    解决Android应用进入桌面后,再次点击APP抛异常的问题
    android studio 3.0 修改release生成的apk名称
    winfrom打包好的程序,安装错误代码1603
  • 原文地址:https://www.cnblogs.com/Merrys/p/7105799.html
Copyright © 2011-2022 走看看