Html5的Reset 和Base样式的结合

今天无意在网上看到一个介绍Normalize.css文章,觉得很有意思,于是学习了一下,发现他和reset.css一样的功能。大部分情况下,我们在页面中使用CSS Resets解决不同浏览器对HTML元素的默认CSS设置的差异。CSS normalization则与CSS Resets不同,为了页面具有相同的表现,CSS Resets对大多元素的样式进行了复位操作,而normalize.css则在保留原有表现的基础上进行值的重设并修复一些Bug。

我以前在《drupal主题的基础样式—reset、base、layout、print》介绍过有关于Reset CSS,Base CSS等样式的使用,但对于我们个人做项目来说,没有必要把样式分得那么细,这样一来增加了HTTP的请求,从而影响了项目的性能,于是今天重新结合Normalize CSS,Reset CSS, Base CSS, Html5 Reset Css整理了一份新的样式,我这里暂把他叫做HTML5 的Reset CSS 和Base CSS的结合。下面把相应的代码贴出来以供大家一起探讨。

/**
*Remove Spacing
*/

body,dl,dd,ul,ol,figure ,h1,h2,h3,h4,h5,h6,p,pre,blockquote,
form ,fieldset,legend ,input,button,select,textarea {
  margin: 0;
  padding: 0;
}

/*
 * Add block display for HTML5 elements
 * Corrects block display not defined in IE6/7/8/9 & FF3
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section {
  display: block;
}

/* =============================================================================
   Typography
   ========================================================================== */

/*
 * Add bottom border
 * Corrects styling not present in IE7/8/9 S5 Chrome
 */

abbr[title],
dfn[title] {
  border-bottom: 1px dotted;
  cursor:help;
}

/*
 * Define font family as monospace
 * Corrects font family set oddly in IE6 S5 C10
 * en.wikipedia.org/wiki/User:Davidgothberg/Test59
 */

pre,
code,
kbd,
samp {
	font-family: monospace, sans-serif;
	_font-family: 'Courier New', monospace, sans-serif;
	font-size: 1em;
}

/*
 * Add line wrapping
 * Improves readability of pre-formatted text in all browsers
 */
pre {
  white-space: pre;/*CSS2*/
  white-space: pre-wrap;/*CSS2.1*/
  white-space: pre-line;/*CSS3*/
  word-wrap: break-word;/*IE*/
}

/*
 * Remove quotes
 * 1. Addresses CSS quotes not supported in IE6/7
 * 2. Addresses quote attributes not supported in S4
 */

blockquote,
q {
  quotes: none;
}

blockquote:before,
blockquote:after,
q:before,
q:after {
  content: '';
  content: none;
}

/*
 * Define font size
 * Improves appearance in all browsers
 */
small {
  font-size: 75%;
}

/*
 * Define font size and alignment
 * Improves appearance without affecting line-height in all browsers
 * gist.github.com/413930
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/*Clear floats 
 *The Magnificent CLEARFIX:Updated fo prevent margin-collapsing on child elements 
 */
.clearfix:before,
.clearfix:after {
   content:"\0020";
   display: block;
   height: 0;
   visibility: hidden;
}

.clearfix {
  zoom: 1;/*IE<8*/
}

.clearfix:after {
  clear: both;
}
* html .clearfix { 
  zoom: 1; /* IE6 */
} 
*:first-child+html .clearfix { 
  zoom: 1; /* IE7 */
} 

/*
 * Add inline-block display for HTML5 elements
 * Corrects inline-block display not defined in IE6/7/8/9 & FF3
 */

audio[controls],
canvas,
video {
 display: inline-block;
 *display: inline;
 *zoom: 1;
}

html {
 font-size: 100.01%;/*To Prevent bugs in IE and Opera*/
 height: 100%;/*Using height 100% on html and body allows to style containers with a 100% height*/
 overflow-y: scroll;/*The overflow declaration is to make sure there is a gutter for the scollbar in all browsers regardless of content*/
 cursor: default; /* Add normal cursor  Improves visual focus of page during mouse use in all browsers */
 overflow-y: scroll; /* Add vertical scrollbar  Keeps page centered in all browsers regardless of content height */
 -webkit-tap-highlight-color: transparent; /* Add vertical scrollbar  Keeps page centered in all browsers regardless of content height */
 -ms-text-size-adjust: 100%; /* Define maximum text display as 100% to document Corrects text displayed oddly after orientation change in handheld browsers */
 -webkit-text-size-adjust: 100%; /* Define maximum text display as 100% to document Corrects text displayed oddly after orientation change in handheld browsers */
}

body {
 background-color: #fff;/*Not all browsers set white as the default background color*/
 color: #444;/*#444 looks better than black*/
 height: 100%;
}

body,
button
input,
select,
textarea {
 font: 12px/1.5 sans-serif;
}

img,fieldset {
  border: 0 none; /*Remove border   Improves readability when inside <a> element in all browsers*/
}

img {
  vertical-align: top;
  -ms-interpolation-mode: bicubic; /*Add high quality bicubic image resampling Improves visual appearance when scaled in IE7*/
}

/* =============================================================================
   Links
   ========================================================================== */

/*
 * Remove outline
 * Improves appearance when active or hovered in all browsers
 * people.opera.com/patrickl/experiments/keyboard/test
 */

a,
a:active,
a:hover {
  outline: none;
}

/*
 * Define outline as thin dotted
 * Improves appearance displayed oddly in C10
*/

a:focus {
 outline: thin dotted;
}

a,
a:link {
 color: #0000EE;
 text-decoration: none;
}

a:hover {
 text-decoration: underline;
}
a:visited {
  text-decoration: none;
  color: #551A8B;
}

/*Hide only visually,but have it available for screenreaders*/
.hidden {
   border: 0 !important;
   clip: rect(1px 1px 1px 1px);/*IE<8*/
   clip: rect(1px,1px,1px,1px);
   height: 1px !important;
   margin: -1px;
   overflow: hidden;
   padding: 0 !important;
   position: absolute !important;
   width: 1px;
}

/* =============================================================================
   Lists
   ========================================================================== */

dd {
  margin: 0 0 0 40px;
}

nav ul,
nav ol {
  list-style: none;
}

/* =============================================================================
   Forms
   ========================================================================== */
form {
  overflow: visible;
}

fieldset {
  line-height: 1;/*line height helps to set the vertical alignment of radio buttons and check boxes*/
}

/*
 * Add negative left margin
 * Corrects alignment displayed oddly in IE6/7
 */

legend {
  *margin-left: -7px;
}

/*
 * Define consistent vertical alignment display in all browsers
 */

button,
input,
select,
textarea {
  vertical-align: baseline; 
  *vertical-align: middle; 
}

/*
 * 1. Define line-height as normal
 *    Corrects FF3/4 setting it using !important in the UA stylesheet
 * 2. Make visible overflow
 *    Fixes spacing displayed oddly in IE6/7
 */

button,
input {
  line-height: normal; /* 1 */
  *overflow: visible;  /* 2 */
}

/*
 * 1. Display hand cursor for clickable form elements
 *    Improves usability and consistency of cursor style between image-type <input /> and others
 * 2. Define appearance for clickable form elements
 *    Corrects inability to style clickable <input /> types in iOS
 */

button,
input[type="button"], 
input[type="reset"], 
input[type="submit"],
.form-btn,
.btn {
  cursor: pointer; /* 1 */
  -webkit-appearance: button; /* 2 */
}

/*
 * Define box sizing
 * Addresses box sizing set to content-box in IE8/9
 */

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
}

input[type="checkbox"] {
  vertical-align: bottom;/*Vertical alignment of checkboxes*/
  *vertical-align: baseline;/*IE7*/
}

input[type="radio"] {
  vertical-align: text-bottom;/*Vertical alignment of radio buttons*/
}

input {
  _vertical-align: text-bottom;/*Vertical alignment of input fields for IE6*/
}
/*
 * Define box sizing and appearance
 * Addresses box sizing set to border-box in S5 Chrome (include -moz to future-proof)
 * Addresses appearance set to searchfield in S5 Chrome
 */

input[type="search"] {
  -webkit-appearance: textfield;
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  box-sizing: content-box;
}

/*
 * Remove inner padding and border
 * Fixes appearance displayed oddly in FF3/4
 * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/*
 * 1. Disable default vertical scrollbar
 *    Corrects scrollbar displayed oddly in IE6/7/8/9
 * 2. Add top vertical alignment
 *    Improves readability and aligment in all browsers
 */

textarea {
  overflow: auto; /* 1 */
  vertical-align: top; /* 2 */
}

input[type="email"],
input[type="text"],
input[type="password"],
input[type="select"],
input[type="search"],
input[type="file"],
textarea,
select {
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 1px solid #7F9DB9;
}

input:focus,
textarea:focus,
select:focus {
  outline-width: 0;/*No outline border for Safary*/
}


select {
  background-color: transparent;/*In Webkit/Mac, select fails to inherit color,font-*,etc if there is no other styling like background for example(border will do to)*/
}

label {
  font-weight: normal;
}

label.required:after { 
  content:"*";
  color:red;
  font-family:"Lucida Grande",Verdana,Arial,Helvetica,sans-serif;
}

button,
input[type="submit"],
input[type="reset"],
input[type="button"],
.form-btn {
  width: auto;
  *width: 1;
  overflow: visible;
}
/* =============================================================================
   Tables
   ========================================================================== */

/* 
 * Remove spacing between table cells
 * Improves vertical and horizontal alignment in all browsers
 */

table {
  border-collapse: collapse;
  border-spacing: 0;
}

th,
td {
  padding: 0;
  text-align: left;
  vertical-align: middle;
}

/*
 *Header
 */
h1 {
  font-size: 2em;
}

h2 {
  font-size: 1.5em;
}

h3 {
  font-size: 1.17em;
}

h4 {
  font-size: 1em;
}

h5 {
  font-size: 0.83em;
}

h6 {
  font-size: 0.67em;
} 

p {
  margin-bottom: 4px;
}

 

上面样式中大部分写有标注,大家可以根据标注去理解相应部分样式的作用,此样式也使用了许多html5的标签CSS3的选择器,可能有部分样式在IE8以下版本会不起作用,如果想效果达到一致,最好在头部加上html5.js和加上你自己的class名,特别是表单部分的初始化样式。此样式仅供参考学习,如果大家有更好的使用方法,不仿一起分享,一起学习,一起探讨一下这方面的知识。

本文主要参考了《drupal主题的基础样式—reset、base、layout、print》,《HTML5Reset Stylesheet》,《Normalize.css》,其中Normalize CSS有两个版本:necolasjonathantneal。有感兴趣的朋友可以下载他们的源码,仔细学习。

如需转载烦请注明出处:W3CPLUS

返回顶部