原文链接:https://github.com/hangyangws/baseCss#basecss

baseCss

  • 意义

    统一各个浏览器差异、统一团队开发起始标准、弥补浏览器的“缺点”、提供频繁使用的原子类名。

  • 友情提示

    • 前端开发中如果不是UI特别要求,颜色值采用web安全色最佳,像素以偶数最佳。
    • 移动端开发,量度可以尝试rem为单位(什么是rem,请自行Google)。
    • 使用rem为量度单位时,浏览器会是基于html节点而不是body节点计算大小。
  • 代码解释

    @charset 'utf-8';
    
    /**
    * base.css
    * 航洋无声(hangyangws@foxmail.com、hangyangws.win、github.com/hangyangws、weibo.com/hangyangws)
    */ /*标准字体大小(rem参照对象)设置为14像素*/ html {
    font-size: 14px;
    } /**
    * 当`body`宽度大于`html`宽度时,某些浏览器会出现内部滚动条,所以给`html、body`设置宽度100%。
    * 取消部分浏览器点击有阴影。
    * 优化移动端滚动事件。
    */ html,
    body {
    width: 100%;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-overflow-scrolling: touch;
    overflow-scrolling: touch;
    } /**
    * 移除常用标签的浏览器默认的`margin、padding`
    * pre、code、legend、fieldset、blockquote……等其他标签不是很常用,所以本css都不会一一列举出来,为了简化。如果项目中用到,可以自己单独写。
    */ body,
    p,
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    dl,
    dd,
    ul,
    ol,
    th,
    td,
    button,
    figure,
    input,
    textarea,
    form {
    margin: 0;
    padding: 0;
    } /*不同浏览器的input、select、textarea的盒子模型宽度计算方式不通,统一为最常见的content-box*/ input,
    select,
    textarea {
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    } /**
    * `table`相邻单元格的边框间的距离设置为0。
    * 设置`table`的边框为合并模式。
    */ table {
    border-spacing: 0;
    border-collapse: collapse;
    } /**
    * 移除浏览器部分元素的默认边框。
    * acronym、fieldset……等其他标签不是很常用,所以本css都不会一一列举出来,为了简化。如果项目中用到,可以自己单独写。
    */ img,
    input,
    button,
    textarea {
    border: none;
    } /*因为`input`默认不继承父元素的居中样式,所以让`input`元素继承父元素的文本居中方式*/ input {
    text-align: inherit;
    } /*让`textarea`默认不可以放缩*/ textarea {
    resize: none;
    } /**
    * 因为部分浏览器默认的`q`标签的前后伪元素有多余样式,所以置空`q`标签前后伪元素。
    * q标签不是很常见,如果开发者需要可以使用。
    /*
    q::before,
    q::after {
    content: '';
    }
    */ /**
    * 由于以下元素的部分属性没有继承父节点样式,所以声明这些元素的这些属性为父元素的属性。
    * 取消这些元素的`outline`样式。
    */ a,
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    input,
    select,
    button,
    option,
    textarea,
    optgroup {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    font-style: inherit;
    line-height: inherit;
    color: inherit;
    outline: none;
    } /**
    * 如果绝对定位元素找不到被设置过定位信息的上级元素,那么此元素基于根节点定位,所以给`body`设置相对定位,让这些元素基于`body`定位。
    * 设置网页基本字体颜色为`#666`(深灰色)。
    * 设置网页背景颜色颜色为`#fff`(纯白色)。
    * 使字体渲染更顺滑。
    */ body {
    font: 14px 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'STHeiti Light [STXihei]', 'Microsoft Yahei', sans-serif;
    position: relative;
    color: #666;
    background: #fff;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    } /**
    * 取消超链接元素的默认文字装饰(下划线)。
    * 灵位del、ins标签的中划线、下划线还是挺好的,就不去掉。
    */ a {
    text-decoration: none;
    } /**
    * 开发中UI设计的列表都是和原生的样式差太多,所以直接给取消ol,ul默认列表样式。
    */ ol,
    ul {
    list-style: none;
    } /*使如下元素默认鼠标经过是`小手`的形状(一般表示可以点击,在PC端挺好)*/ button,
    input[type='submit'],
    input[type='button'] {
    cursor: pointer;
    } /*取消火狐浏览器部分版本`input`聚焦的时候默认的`padding、border`*/ input::-moz-focus-inner {
    padding: 0;
    border: 0;
    } /*取消部分浏览器`input[type='number']`的默认样式*/ input[type='number'] {
    -moz-appearance: textfield;
    } input[type=number]::-webkit-inner-spin-button,
    input[type=number]::-webkit-outer-spin-button {
    margin: 0;
    -webkit-appearance: none;
    } /*输入控件的`placeholder`颜色设置为`#999`(浅灰色)*/ input::-webkit-input-placeholder,
    textarea::-webkit-input-placeholder {
    color: #999;
    } input:-moz-placeholder,
    textarea:-moz-placeholder {
    color: #999;
    } input::-moz-placeholder,
    textarea::-moz-placeholder {
    color: #999;
    } input:-ms-input-placeholder,
    textarea:-ms-input-placeholder {
    color: #999;
    } /*由于部分浏览器`template`直接显示出来,所以要隐藏`template`元素*/ template {
    display: none;
    } /**
    * 清楚浮动`c ==> clear`,原子类
    */ .clear {
    zoom: 1;
    } .clear::after {
    display: block;
    visibility: hidden;
    clear: both;
    height: 0;
    content: '.';
    } /*position: fixed的缩写,原子类*/ .pf {
    position: fixed;
    /*chrome 内核 浏览器 position: fixed 防止抖动*/
    -webkit-transform: translateZ(0);
    } /*利用绝对定位宽高拉升原理,中心居中元素,原子类*/ .middle {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    } /*利用相对定位于`CSS3`使元素垂直居中,原子类*/ .middle-v {
    position: relative;
    top: 50%;
    -webkit-transform: -webkit-translateY(-50%);
    -moz-transform: -moz-translateY(-50%);
    -o-transform: -o-translateY(-50%);
    transform: translateY(-50%);
    } /*元素计算宽高德盒子模型以`border`为外界限,原子类*/ .bb {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    } /*单行文本溢出显示省略号`to==>text-overflow`,原子类*/ .to {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    }
  • 其它

    • 原子类的优缺点
      1. 维护困难(缺)
      2. 阅读困难(缺)
      3. 便于抽出复用代码,提高代码复用程度(优)
    • base.css涉及的原子类解释 才接触开发的时候,我也特别喜欢使用原子类,比如:m10 w10 p10 …。后来我发现其中的很多弊端,比如难以维护、修改样式还要去修改HTML文件等等。所以本base.css包含的c middle middle-v bb to原子类都是我自己平时开发中用的最多不易变动的原子类。

baseCss/resetCss(转)的更多相关文章

  1. base-css

    html{ min-width: 320px;}body{ min-width: 320px; overflow-x:hidden }@media print { * { background: tr ...

  2. CSS - ResetCss

    /* KISSY CSS Reset 理念:清除和重置是紧密不可分的 特色:1.适应中文 2.基于最新主流浏览器 */ /* 清除内外边距 */ body, h1, h2, h3, h4, h5, h ...

  3. CSS3中border-radius、box-shadow与gradient那点事儿

    一.border-radius border-radius用于添加圆角边框,用处非常广泛. 1)一个值,代表了四个角 .radius-one { /* Safari 3-4, iOS 1-3.2, A ...

  4. 零散的JavaScript公用方法

    function stopBubble(e) { if (e && e.stopPropagation) {//如果传入了事件对象,那么就是非IE浏览器 e.stopPropagati ...

  5. bootstratp图标的使用

    bootstratp作为一个优秀的前端框架,最近使用了其中的Glyphicon Halflings的字体图标.起初一直显示不出来,后面通过搜索相关资料直到成功显示,在此做一些总结,方便后面复习. 1. ...

  6. jquery :checked(过滤选择器) 和 空格:checked(后代选择器)

    jquery 过滤选择器 和 后代选择器 <%@ page language="java" contentType="text/html; charset=UTF- ...

  7. 【BootStrap】初步教程

    <span style="font-family: Arial, Helvetica, sans-serif;">最近刚刚接触到BootStrap,在这里总结一下Boo ...

  8. Bootstrap页面布局13 - BS按钮

    bootstrap中的按钮类 一般可以作为按钮的标签有:<a></a>  <button></button>  <input type='butt ...

  9. [bootstrap] bootstrap 简介和相关网址

    Bootstrap 来自 Twitter,是目前很受欢迎的前端框架. 基于 HTML.CSS.JAVASCRIPT ,简洁灵活,使 Web 开发更加快捷. Bootstrap提供了优雅的HTML和CS ...

随机推荐

  1. 使用_Capistrano_进行自动化部署(2)

    之前的一篇文章是为了解决问题而写的,很多东西都没有介绍清楚,这一篇文章就是完整介绍一下 Capistrano,主要的参考来源是 Modern PHP 这本书. Capistrano 是用于自动部署应用 ...

  2. 持续集成之jenkins2

    ip 什么是持续集成 没有持续集成 持续集成最佳实践 持续集成概览 什么是Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开 ...

  3. 利用maven-assembly-plugin加载不同环境所需的配置文件及使用场景

    背景: 如何加载不同环境的配置文件已经成了势在必行的,我们通常利用profile进行,详情参见我上篇博客 http://www.cnblogs.com/lianshan/p/7347890.html, ...

  4. Supermarket---poj456(贪心并查集优化)

    题目链接:http://poj.org/problem?id=1456 题意是现有n个物品,每个物品有一个保质期和一个利润,现在每天只能卖一个商品,问最大的利润是多少,商品如果过期了就不能卖了: 暴力 ...

  5. 【Loadrunner】性能测试:通过服务器日志获取性能需求

    性能测试:通过服务器日志获取性能需求          接触过性能测试的童鞋都知道,想要做好一个项目的性能测试,性能需求的获取至关重要~!如果公司有做过性能测试还好,大家可以拿之前的性能测试数据作为参 ...

  6. mysql索引详解(转)

    什么是索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里面的 ...

  7. python 利用爬虫获取页面上下拉框里的所有国家

    前段时间,领导说列一下某页面上的所有国家信息,话说这个国家下拉框里的国家有两三百个,是第三方模块导入的,手动从页面拷贝,不切实际,于是想着用爬虫去获取这个国家信息,并保存到文件里. 下面是具体的代码, ...

  8. Swagger生成的接口需要权限验证的处理方法

    通常开发API的时候需要对接口进行权限验证,而我们在使用Swagger生成接口文档界面的时候,直接调用需要权限验证的接口会提示"当前用户没有登陆" 为了解决此问题,我们需要更改一下 ...

  9. Jmeter之Constant Timer与constant throughput timer的区别

    当放置Constant Timer于两个http请求之间,那么它代表的含义是:在上一个请求发出至完成后, 开始Contant Timer指定的时间,最后再发出第二个请求.它并不是代表两个请求之间的发送 ...

  10. docker——libnetwork插件网络功能

    从1.7.0版本开始,Docker正是把网络和存储这两部分的功能都以插件化形式剥离出来,允许用户通过指令来选择不同的后端实现.剥离出来的独立容器网络项目叫libnetwork,从名字就能看出,它希望将 ...