美文网首页
编码规范、垂直居中、伪类

编码规范、垂直居中、伪类

作者: yytyff | 来源:发表于2017-04-07 22:46 被阅读0次

    命名技巧

    语义化
    语义化标签优先
    基于功能命名、基于内容命名、基于表现命名
    简略、明了、无后患
    tips:

    大声叫出它的名字
    翻译成英文

    <!-- 不好  -->
    <div class="article">
      <div class="article_title">编码规范</div>
      <div class="the_content">今天讲的内容是编码规范,讲师
         <div class="darkbold">若愚</div> @饥人谷</div>
    </div>
    
    不符合语义化改为:
    <!-- 好 -->
    <article>
      <h1>编码规范</h1>
      <p>今天讲的内容是编码规范,讲师
         <b>若愚</b> @饥人谷</p>
    </article>
    
    <!-- 不好  --> :取名容易带来误解
    <div class="left"></div>
    <div class="red"></div>
    <div class="s"></div>
    <a class="link" href="#"></a>
    
    <!-- 好 -->
    <div class="success"></div>
    <div class="theme-color"></div>
    <a class="login" href="#"></a>
    
    <!-- 不好 -->
    <article class="blue">...</article>
    <article class="redBg mt30 bigText">...</article>
    <!-- 好 -->
    <article class="movies">...</article>
    <article class="news">...</article>
    

    命名范例

    1.所有命名都使用英文小写

    推荐:`<div class="main"></div> `
    
    不推荐: `<div class="Main"></div> `
    

    2.命名用引号包裹

    推荐:`<div id="header"></div> `
    
    不推荐: `<div id=header></div> `
    

    3.用中横线连接

    推荐:`<div class="mod-modal"></div> `
    
    不推荐: `<div class="modModal"></div> `
    

    4.命名体现功能,不涉及表现样式(颜色、字体、边框、背景等)

    推荐:`<div class="text-lesser"></div>`
    
    不推荐: `<div class="light-grey"></div>`
    

    常见命名1

    .wrap或.wrapper -- 用于外侧包裹
    .container或 .ct -- 包裹容器
    .header -- 用于头部
    .body -- 页面 body
    .footer -- 页面尾部
    aside、sidebar -- 用于侧边栏
    .content -- 和header footer 对应,用于主要内容
    .navigation -- 导航元素
    .pagination -- 分页
    

    常见命名2

    .tabs > .tab -- tab 切换
    .breadcrumbs -- 导航列表、面包屑
    .dropdown -- 下拉菜单
    .article -- 文章
    .main -- 用于主体
    .thumbnail -- 头像,小图像
    .media -- 媒体资源
    .panel -- 面板
    .tooltip -- 鼠标放置上去的提示
    .popup -- 鼠标点击弹出的提示
    

    常见命名3

    .button、.btn -- 按钮
    .ad -- 广告
    .subnav -- 二级导航
    .menu -- 菜单
    .tag -- 标签
    .message或者.notice -- 提示消息
    .summary -- 摘要
    .logo -- logo
    .search -- 搜索框
    .login -- 登录
    

    常见命名4

    .register -- 注册
    .username -- 用户名
    .password -- 密码
    .banner -- 广告条
    .copyright -- 版权
    .modal或者 .dialog -- 弹窗
    
    var 名字 = {
      状态: [
        'inverse',
        'toggled',
        'switched',
        'original',
        'initial',
        'identified',
        'disabled',
        'loading',
        'pending',
        'syncing',
        'default'
      ],
      修饰: [
        'dark',
        'light',
        'shaded',
        'flat',
        'ghost',
        'maroon',
        'pale',
        'intense',
        'twisted',
        'narrow',
        'wide',
        'smooth',
        'separate',
        'clean',
        'sharp',
        'aligned'
      ],
      元素: [
        'pagination',
        'modal',
        'popup',
        'article',
        'story',
        'flash',
        'status',
        'state',
        'media',
        'block',
        'card',
        'teaser',
        'badge',
        'label',
        'sheet',
        'poster',
        'notice',
        'record',
        'entry',
        'item',
        'figure',
        'square',
        'module',
        'bar',
        'button',
        'action',
        'knob'
      ],
      布局: [
        'navigation',
        'wrapper',
        'inner',
        'header',
        'footer',
        'aside',
        'section',
        'divider',
        'content',
        'container',
        'panel',
        'pane',
        'construct',
        'composition',
        'spacing',
        'frame'
      ]
    }
    

    CSS规范

    书写规范

    tab 用两个空格表示
    css的 :后加个空格, {前加个空格
    每条声明后都加上分号
    换行,而不是放到一行
    颜色用小写,用缩写, #fff
    小数不用写前缀, 0.5s -> .5s;0不用加单位
    尽量缩写, margin: 5px 10px 5px 10px -> margin: 5px 10px
    
    /* Not recommended */
    .test {
      display: block;
      height: 100px
    }
    /* Recommended */
    .test {
      display: block;
      height: 100px;
    }
    
    
    /* Not recommended */
    h3 {
      font-weight:bold;
    }
    /* Recommended */
    h3 {
      font-weight: bold;
    }
    
    
    /* Not recommended: missing space */
    #video{
      margin-top: 1em;
    }
    
    /* Not recommended: unnecessary line break */
    #video
    {
      margin-top: 1em;
    }
    /* Recommended */
    #video {
      margin-top: 1em;
    }
    
    
    /* Not recommended */
    a:focus, a:active {
      position: relative; top: 1px;
    }
    /* Recommended */
    h1,
    h2,
    h3 {
      font-weight: normal;
      line-height: 1.2;
    }
    
    
    /* Always put a blank line (two line breaks) between rules. */
    html {
      background: #fff;
    }
    
    body {
      margin: auto;
      width: 50%;
    }
    
    
    /* Not recommended */
    @import url("//www.google.com/css/maia.css");
    
    html {
      font-family: "open sans", arial, sans-serif;
    }
    /* Recommended */
    @import url(//www.google.com/css/maia.css);
    
    html {
      font-family: 'open sans', arial, sans-serif;
    }
    

    参考
    http://codeguide.bootcss.com/
    https://google.github.io/styleguide/htmlcssguide.html

    垂直居中

    居中vs不居中

    代码:上下padding相等{padding:40px 0;}

    http://js.jirengu.com/feki/1/edit?html,css,output

    绝对定位实现居中

    代码

    http://js.jirengu.com/govucapiko/1/edit?html,css,output

    vertical-align实现居中

    代码
    vertical-align:middle作用在行类元素和表格中
    http://js.jirengu.com/pinasosewi/1/edit?html,css,output

    table-cell实现居中

    代码
    http://js.jirengu.com/nape/1/edit?html,css,output

    伪类与伪元素

    伪类

    伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化

    伪类列举

    伪类
    
    :checked:比如CheckBox,得到被勾选的这个状态
    :disabled得到被禁用的这个状态
    :valid有效的
    :invalid无效的
    :first-child第一个孩子
    :last-child最后一个孩子
    :first-of-type某种类型的第一个孩子
    

    link visited hover active 顺序

    a:link{
      color: blue;
    }
    a:visited{
      color: yellow;
    }
    a:hover{
      color: red;
    }
    a:active{
      color: pink;
    }
    

    http://js.jirengu.com/kuco/1/edit?html,css,output

    first-child vs first-of-type

    h1:first-child: 选择是h1并且它是长子的元素
    h1:first-of-type: 选择是h1并且它是它父亲里h1类型中的长子的元素
     <div class="wrap">
      <h1>我是大标题1</h1>
      <p>我是段落2</p>
      <h1>我是大标题3</h1>
    </div>
    <style>
    .wrap h1:first-of-type{
      background: yellow;
    }
    .wrap p:first-of-type{
      background: pink;
    }
    .wrap h1:first-child{
      color: red;
    }
    .wrap p:first-child{
      color: blue;
    }  
    </style>
    

    http://js.jirengu.com/baqo/1/edit?html,css,output

    伪元素

    伪元素用于创建一些不在文档树中的元素,并为其添加样式。

    单双冒号:
    ::before/:before
    ::after/:after
    ::first-letter/:first-letter
    ::first-line/:first-line
    
    仅双冒号:
    ::selection
    ::placeholder
    ::backdrop
    

    http://js.jirengu.com/xato/1/embed?html,css,output

    :before :after
      <div class="box">
        <p>这是第一段</p>
      </div>
      <style>
      .box:before{
        content: 'start'
      }
      .box:after{
        content: 'end'
      }
      </style>
    
    <div class="box">
      ::before
      <p>这是第一段</p>
      ::after
      </div>
    
    :before :after
    element:before 在element内部创建一个行内元素,作为element的第一个孩子
    element:after 在element内部创建一个行内元素,作为element的最后一个个孩子
    用:before :after 的目的是为了省标签
    其中content 是必不可少
    

    应用-清除浮动

    .clearfix:after {
        content:"";
        display:block;
        clear:both;
    }
    

    http://js.jirengu.com/kiwo/1/edit?html,css,output

    应用-替代标签

    hi, 这里是饥人谷  hi, 这里是饥人谷
    代码
    
      <div class="tooltip">
        <span class="caret"></span>
        hi, 这里是饥人谷
      </div>
      <div class="bubble">hi, 这里是饥人谷</div>
      
      <style>
        .tooltip, 
        .bubble{
          position: relative;
          padding: 10px;
          border-radius: 3px;
          background: #fff;
          border: 1px solid #000;
          display: inline-block;
        }
        .tooltip .caret,
        .bubble:before{
            width: 10px;
            height: 10px;
            border-left: 1px solid #000;
            border-top: 1px solid #000;
            background: #fff;
            display: inline-block;
            transform: rotateZ(45deg);
            position: absolute;
            top: -6px;
        }
        .bubble:before{
          content:''
        }
      </style>
    

    http://js.jirengu.com/buqo/1/edit?html,output

    应用-自定义checkbox

    点击笑脸切换:  代码
    
    今天的心情: <input type="checkbox">
    <style>
    input[type=checkbox]{
      -webkit-appearance: none;
      appearance: none;
      background: url(http://7xpvnv.com2.z0.glb.qiniucdn.com/b6dcd011-23cc-4d95-9e51-9f10100103bd.png) 0 0 no-repeat;
      display: inline-block;
      width: 20px;
      height: 20px;
      background-size: contain;
      vertical-align: middle;
      outline: none;
    }
    input[type=checkbox]:checked{
      -webkit-appearance: none;
      appearance: none;
      background: url(http://7xpvnv.com2.z0.glb.qiniucdn.com/538f26f0-6f3e-48d5-91e6-5b5bb730dd19.png) 0 0 no-repeat;
      display: inline-block;
      width: 20px;
      height: 20px;
      background-size: contain;
      vertical-align: middle;     
    }
    </style>
    

    http://js.jirengu.com/bazi/1/edit?html,output

    字体图标

    <link rel="stylesheet" type="text/css" href="http//at.alicdn.com/t/font_nyta5x5h650cnmi.css">
    <span class="iconfont icon-jirengulogojichu2"></span> 代码
    代码

    参考文章-前端学习指南-字体图标
    https://zhuanlan.zhihu.com/p/22724856?refer=study-fe
    参考
    Alloy Team - 总结伪类与伪元素
    http://www.alloyteam.com/2016/05/summary-of-pseudo-classes-and-pseudo-elements/
    W3C - Pseudo-elements and pseudo-classes
    W3C - Pseudo-elements and pseudo-classes 翻译版
    http://www.ayqy.net/doc/css2-1/selector.html#pseudo-elements

    相关文章

      网友评论

          本文标题:编码规范、垂直居中、伪类

          本文链接:https://www.haomeiwen.com/subject/pgykattx.html