zoukankan      html  css  js  c++  java
  • 白板项目总结——css篇

    一、html规范:

    1.有链接跳转的div用a标签包起来,这样能被键盘focus到。

    2.导航可以用nav标签,头部用header标签

    • 并不是所有的链接都必须使用<nav>元素,它只用来将一些热门的链接放入导航栏,例如<footer>元素就常用来在页面底部包含一个不常用到,没必要加入<nav>的链接列表.

     3.数据提交用form标签,form标签上面写action地址即可将form里面input框里面输入的值发送数据到后台,表单用于向服务器传输数据。

    二、css命名规范:

    颜色,排列布局或者一些可以公用的样式或动画等可以提取出来,放在common里面公用。别的页面直接引用即可。

    关于css命名,参考张含韵大神的这篇文章:http://www.zhangxinxu.com/wordpress/?p=1098

    三、css实践:

    1.页面整体布局:

    流布局,使用clac()属性来计算:

    .box {
        width: 500px;
        height: 200px;
        background-color: red;
    }
    .minbox {
        /* 100%;*/
        width: calc(100% - 2px);
        height: 50px;
        border: 1px solid blue;
        background-color: yellow;
    }
    <div class="box">
        <div class="minbox">
        </div>
    </div>

    使用第一种100%和第二种width:calc(100% - px)的区别为:

     第一种为 width为100%的时候,由于左右有1px的border 所以加起来会溢出2px 第二种就用calc()计算用整体的100%宽度减去了2px;

    还有一种办法就是 当width为100%时加上:box-sizing: border-box; ( https://developer.mozilla.org/zh-CN/docs/Web/CSS/box-sizing)

    应用实例1:

    使用calc()计算法:

    http://output.jsbin.com/jusizaqeji

    解释:一行放下4个的话,宽度就是25%,最后一个列表的margin-right 设为0,所以有3个margin-right ,用4个box的宽度来平分这三个margin-right值。即宽度为:calc(25%-24*3/4px)

    上面例子的优点是:不用根据屏幕大小的改动来计算宽度,缺点是不兼容ie8;

     关键代码:

      .item {
          position: relative;
          float: left;
          box-sizing: border-box;
          width: calc(25% - 18px);
          height: 20px;
          margin: 0 24px 24px 0;
          border: 1px solid pink;
          background-color: yellow;
      }
      .item:nth-of-type(4n) {
          margin-right: 0;
      }

    应用实例2:

    使用text-align: justify属性:

    整体剧中:http://output.jsbin.com/fehifenovo 

    关键代码:在列表下面对增加一行widht为100%的标签层

    .justify_fix {
        display: inline-block;
        width: 100%;
        height: 0;
        overflow: hidden;
    }

    左剧中:http://output.jsbin.com/gamijilaru 

     关键代码:复制几个空标签 用来站位

    <li class="item vh"></li>
    <li class="item vh"></li>
    <li class="item vh"></li>

    应用实例3:

    使用margin-left为负值:
    http://output.jsbin.com/venozudiwi
    关键代码:

    .box-ul {
        padding: 0;
        margin: 0;
        list-style: none;
        overflow: hidden;
        margin-left: -20px;
    }
    .item {
        width: 25%;
        display: inline-block;
        float: left;
    }
    .item-box {
        margin-right: 20px;
        margin-bottom: 20px;
        height: 100px;
        border: 1px solid red;
    }

    应用实例4:

    使用vw,跟百分比类似

    demo:http://output.jsbin.com/nolicebetu

    关键代码:

    li {
          width: 25vw;
          background: red;
          padding: 10px;
          border: 1px solid blue;
          box-sizing: border-box;
          float: left;
          list-style: none;
        }

    2、页面各种剧中:

    1.div暴力剧中方法:

    http://jsbin.com/povirerohu,这种剧中的好处是给他加个padding属性,他是从外往内负padding值的

     关键代码:

    .box {
        width: 100px;
        height: 100px;
        background-color: pink;
        position: relative;
    }
    .content {
        width: 50px;
        height: 50px;
        background-color: yellow;
        position: absolute;
        left: 0;right: 0;
        top: 0;bottom: 0;
        margin: auto;
    }

    2.用line-height属性将文字垂直剧中:

     主要代码:

    .box {
        width: 100px;
        height: 100px;
        background-color: pink;
        line-height: 100px;
        text-align: center;
    }

    3.使用vertical-align:middle属性相对剧中来实现剧中效果:

    http://output.jsbin.com/gayisoqeha

    主要代码:

    .wrapper {
        position: fixed;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(25,28,34,.88);
        text-align: center;
        overflow: auto;
        z-index: 20;
    }
    .box {
        width: 300px;
        height: 300px;
        background-color: #FFF;
        display: inline-block;
        white-space: normal;
        vertical-align: middle;
    }
    .box-i {
        display: inline-block;
        height: 100%;
        vertical-align: middle;
    }
    <div class="wrapper">
        <div class="box"></div>
        <i class="box-i"></i>
    </div>

    4.使用transform属性来剧中 :

    实例:http://output.jsbin.com/yofejafuki

    主要代码:

       .box {
         width: 100px;
         height: 100px;
         background: red;
         position: relative;
       }
       .content {
         position: absolute;
         top: 50%;
         left: 50%;
         width: 50px;
         height: 50px;
         background: yellow;
         transform: translate(-50%,-50%);
         -webkit-transform: translate(-50%,-50%); 
       }

    3、页面各种动画:

    使用transition属性来延缓动画,体验更好:

    http://jsbin.com/pigomuyani
    鼠标hover第一排和第二排,分别查看效果。

    主要代码:

    .anima-item {
        border-radius: 4px;
        transition: background .2s;
    }
    .anima-item:hover {
        background: yellow;
    }

    4、svg上面不要写样式,在它的父元素上面写即可。

    若元素上有fill: currentColor; 则它的背景色则为父元素的color:red;
     
    5、善用css选择器 empty属性:
    http://output.jsbin.com/nesipilege
     

    6、一些可以被键盘focus到的元素:

    http://output.jsbin.com/wigejayohi

    7、.在Mac Retina屏幕下面,border为1px可能会识别不到,用border: 1.2px;

    8、border和opacity

    当border:1px solid #000;

    遇上opacity: 0.4之类的会有兼容性问题:

    解决办法:border: 1px solid rgba(0,0,0,.4);

    9、 键盘的可访问性:
    http://output.jsbin.com/bigugafiji
     
     用键盘访问试试,主要代码:
     
    .item {
        font-size: 22px;
        color: red;
    }
    .item:focus {
        color: yellow;
    }
  • 相关阅读:
    本周总结
    本周总结
    本周总结
    本周总结
    性能分析(4)
    大型网站高性能架构
    第二天大数据清洗
    性能分析(2)
    六大质量属性——性能分析(1)
    java设计模式9-代理模式
  • 原文地址:https://www.cnblogs.com/popeyesailorman/p/7793955.html
Copyright © 2011-2022 走看看