20个实用的CSS技巧代码
大家非常的清楚CSS是我们Web制作中不可或缺的一部分。HTML提供了Web制作的结构,但他不能让我们实现美丽的页面制作,此时我们需要CSS的帮助。CSS虽然能帮我们完善Web制作的效果,但其在不同的浏览器下是有不可预知的效果,为了让你的CSS能解决这些不一致下,今天给大家介绍25个CSS技巧代码,我相信这些对你肯家有很大的作用。
一、使用text-indent来隐藏文本
这个常用在图片替换文本中,最常见的就是使用使用图片来替换Logo,这个是非常有用的,使用“text-indent”我们可以达到图片替换文本的效果,而且方便搜索引擎的优化,还能支持阅读器阅读网页内容:
h1 { text-indent:-9999px; margin:0 auto; width:400px; height:100px; background:transparent url("images/logo.jpg") no-repeat scroll; }
当然,这个只是使用“text-indent"替换文本的一种效果,其实他还有更多的方法。
扩展阅读:
- 十种图片替换文本CSS方法
- Fahrner Image Replacement
- Revised Image Replacement
- A new image replacement technique
- Dynamic Text Replacement
- Using background-image to replace text
- CSS Hack: text-indent: -10000px;
- CSS text-indent: An Excellent Trick To Style Your HTML Form
二、根据文件格式设置链接图标
这个技巧主要是针对用户体验,让用户能很清楚点击的链接是有关于什么方面的内容,比如说,点击某个链接会到跳到站外。换句话说使用属性选择器器,给不同的链接设置不同的图标,让用户很轻松的明白相应的链接是有关于什么方面的内容:
a[href^="http:"] { display:inline-block; padding-right:14px; background:transparent url(/Images/ExternalLink.gif) center right no-repeat; } a[href^="mailto:"] { display:inline-block; padding-left:20px; line-height:18px; background:transparent url(/Images/MailTo.gif) center left no-repeat; } a[href$='.pdf'] { display:inline-block; padding-left:20px; line-height:18px; background:transparent url(/Images/PDFIcon.gif) center left no-repeat; } a[href$='.swf'], a[href$='.fla'], a[href$='.swd'] { display:inline-block; padding-left:20px; line-height:18px; background:transparent url(/Images/FlashIcon.gif) center left no-repeat; } a[href$='.xls'], a[href$='.csv'], a[href$='.xlt'], a[href$='.xlw'] { display:inline-block; padding-left:20px; line-height:18px; background:transparent url(/Images/ExcelIcon.gif) center left no-repeat; } a[href$='.ppt'], a[href$='.pps'] { display:inline-block; padding-left:20px; line-height:18px; background:transparent url(/Images/PowerPointIcon.gif) center left no-repeat; } a[href$='.doc'], a[href$='.rtf'], a[href$='.txt'], a[href$='.wps'] { display:inline-block; padding-left:20px; line-height:18px; background:transparent url(/Images/WordDocIcon.gif) center left no-repeat; } a[href$='.zip'], a[href$='.gzip'], a[href$='.rar'] { display:inline-block; padding-left:20px; line-height:18px; background:transparent url(/Images/ZIPIcon.gif) center left no-repeat; }
扩展阅读:
三、在IE浏览器中删除textarea的滚动条
IE浏览器中textarea默认就有滚动条出现,为了达到所有浏览器默认下一致的效果,其实我们可以使用代码让他达到一致的效果:
textarea{ overflow:auto; }
扩展阅读:
四、段落首字下沉
有杂志排版中我们常看到第一个段落的首字下沉的效果,其实这种效果实现是相当的容易:
p:first-letter{ display:block; margin:5px 0 0 5px; float:left; color:#FF3366; font-size:60px; font-family:Georgia; }
扩展阅读:
五、所有浏览器下的CSS透明度
元素透明度时常是个恼人的问题,下面这种方式可以实现所有浏览器下的透明度设置:
.transparent { zoom: 1; filter: alpha(opacity=50); opacity: 0.5; }
但是使用opacity会影响其后代元素的透明度,我们可以考虑使用:
.transparent { /* Fallback for web browsers that doesn't support RGBa */ background: rgb(0, 0, 0); /* RGBa with 0.6 opacity */ background: rgba(0, 0, 0, 0.6); /* For IE 5.5 - 7*/ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); /* For IE 8*/ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; }
扩展阅读:
- CSS3 RGBA
- Cross-Browser Transparency via CSS
- CSS Opacity: A Comprehensive Reference
- HTML/CSS: Transparent iframes in All Browsers
- CSS Transparency Settings for All Browsers
六、Reset Css
Eric Meyer的重置CSS几乎已经成为标准,用来重置浏览器的默认样式:
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } /* remember to define focus styles! */ :focus { outline: 0; } /* remember to highlight inserts somehow! */ ins { text-decoration: none; } del { text-decoration: line-through; } /* tables still need 'cellspacing="0"' in the markup */ table { border-collapse: collapse; border-spacing: 0; }
但这样的重置样式并非适合每一个人,我就在此基础上精减了部分代码,因为我发现我们有很多标签是不怎么使用的:
body,ul,ol,dl,dd,dir,h1,h2,h3,h4,h5,h6,p,pre,blockquote,hr,figure{ margin:0; padding:0; font-size: 100%; vertical-align:baseline; } table { border-collapse:collapse; border-spacing:0; } article, aside, dialog, figure, footer, header, hgroup, nav, section { display:block; } /* * Corrects inline-block display not defined in IE6/7/8/9 & FF3 */ audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } /* * Prevents modern browsers from displaying 'audio' without controls */ audio:not([controls]) { display: none; } /* * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 * Known issue: no IE6 support */ [hidden] { display: none; }
扩展阅读:
- Killer Collection of CSS Resets
- * { CSS:resetr }
- An (Almost) Complete List of Global CSS Reset Styles
- 目前比较全的CSS重设(reset)方法总结
- CSS Tools: Reset CSS
- HTML5 Reset
- Reset CSS研究(八卦篇)
- No CSS Reset
七、图片预加载
图片预加载有时是非常有用的,这样当某个元素需要时,他就已经被加载了,此时就不会有任何延误或闪烁的现像:
#preloader { /* Images you want to preload*/ background-image: url(image1.jpg); background-image: url(image2.jpg); background-image: url(image3.jpg); width: 0px; height: 0px; display: inline; }
扩展阅读:
- 3 Ways to Preload Images with CSS, JavaScript, or Ajax
- Image Preloader
- CSS Image Preloader
- Creating a CSS Image Preloader
- Image Preloader
- Tutorial: How to add preloader with loading image in a gallery using jQuery
- jQuery Plugin: Preload Images
- 4 Ways To Preload Images With CSS or JavaScript
八、基本的CSS Sprite按钮
CSS Sprite我想大家一定是非常熟悉,我们时常在按钮或链接中使用CSS Sprites,用来提搞用户的体验。比如说,我们有一个按钮,当用户鼠标在按钮上时需要显示另一种背景,那么我们就可以使用这样的技术:
a { display: block; background: url(sprite.png) no-repeat; height: 30px; width: 250px; } a:hover { background-position: 0 -30px; }
扩展阅读:
- CSS Sprites: Image Slicing’s Kiss of Death
- The Mystery Of CSS Sprites: Techniques, Tools And Tutorials
- CSS Sprites: What They Are, Why They’re Cool, and How To Use Them
- Basic Link Rollover as CSS Sprite
- Resizable Buttons Using CSS Sprites
- Create a Button with Hover and Active States using CSS Sprites
- Perfect CSS Sprite / Sliding Doors Button
- simple css sprites
- Designing CSS Buttons: Techniques and Resources
九、Google Font API
Google Font给我们提供一个新的字体设置:
<head> Inconsolata:italic|Droid+Sans" </head>
body { font-family: 'Tangerine', 'Inconsolata', 'Droid Sans', serif; font-size: 48px; }
扩展阅读:
- Google Web Fonts API
- Google web fonts
- A Guide to Google Font API
- Google Font API
- Google Font API and Typekit solutions VS @font-face
- Quick Tip: Google Fonts API: You’re Going to Love This
- The Google Font API for Web Developers
- Easy Custom Web Typography with Google Fonts API
十、浏览器的专用hack
浏览器的兼容问题向来都是很烦的事情,特别是在IE下的兼容问题。但有时我们为了达到一致的效果,不得不使用浏览器的兼容:
/* IE 6 */ * html .yourclass { } /* IE 7 */ *+html .yourclass{ } /* IE 7 and modern browsers */ html>body .yourclass { } /* Modern browsers (not IE 7) */ html>/**/body .yourclass { } /* Opera 9.27 and below */ html:first-child .yourclass { } /* Safari */ html[xmlns*=""] body:last-child .yourclass { } /* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */ body:nth-of-type(1) .yourclass { } /* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */ body:first-of-type .yourclass { } /* Safari 3+, Chrome 1+ */ @media screen and (-webkit-min-device-pixel-ratio:0) { .yourclass { } }
扩展阅读:
- 浏览器兼容之旅的第二站:各浏览器的Hack写法
- Browser-Specific CSS Hacks
- Browser Specific Hacks
- Browser CSS hacks
- Browser Specific Hacks
- CSS Browser Selector
- Css Hacks
十一、固定页脚
固定页脚在屏幕的底部,在现代浏览器来说是一件非常容易的事情,但是在IE6下还是需要特殊的处理:
#footer { position:fixed; left:0px; bottom:0px; height:30px; width:100%; background:#999; } /* IE 6 */ * html #footer { position:absolute; top:expression((0-(footer.offsetHeight)+(document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight)+(ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop))+'px'); }
扩展阅读:
- Fixed footer
- Fixed Footer
- Development: Fixed Footers without JavaScript
- Fixed Footer Backgrounds with CSS
- Fixed Header & Footer Layout: A Beginner’s Guide
- CSS Fixed Footer
- SharePoint 2010 – Adding a Fixed Footer to your SharePoint Master Page
十二、翻转图片
翻转图像随着CSS3的transform越来越实用,不需要重新加载图片,就可以实现一个图片的旋转。常见的是一个三角型效果,我们想让他在不同状态展示不同的风格:
img.flip { -moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH"; }
扩展阅读:
十三、clearfix
clearfix主要是使用他来清除浮动,只需要添加这个类名无需加上任何HTML标记,就可以达到清除浮动的效果:
.clearfix:before, .clearfix:after { content: " "; display:table; } .clearfix:after { clear:both; overflow:hidden; } .clearfix { zoom: 1; }
扩展阅读:
- Clear Float
- Force Element To Self-Clear its Children
- CSS Clearfix Best Cross browser solution
- Lessons Learned Concerning the Clearfix CSS Hack
- A new micro clearfix hack
- How To Clear Floats Without Structural Markup
十四、圆角
随着CSS3的属性的出现,我们制作圆角效果就不需要在像以前那样的辛苦了,可以使用CSS3的border-radius来实现,只是在IE-6-8下无法实现,我们来看现代浏览器下如何制作圆角:
.round{ -moz-border-radius: 10px; -webkit-border-radius: 10px; -khtml-border-radius: 10px; /* for old Konqueror browsers */ border-radius: 10px; /* future proofing */ }
扩展阅读:
- CSS3的圆角Border-radius
- Rounded Corners
- CSS Rounded Corners 'Roundup'
- CSS Rounded Corners In All Browsers (With No Images)
- CSS Rounded Corners
- Rounded Corners
- CssRound : the rounded corner Css3 generator
十五、!important
!important有时可以帮我们做很多事,他可以覆盖任何相同的样式,换句话说他可以改为样式的权重:
p{ font-size:20px !important; }
扩展阅读:
- !important CSS Declarations: How and When to Use Them
- When Using !important is The Right Choice
- Using !important with CSS
- The importance of !important in CSS
- Override Inline Styles with CSS
- IE6 and the !important rule
十六、@font-face
@font-face也是CSS3的属性之一,他能在所有浏览器下运行。最大的作用就是让用户没有字体的浏览下也能支持网页字体,具体使用:
@font-face { font-family: 'Graublau Web'; src: url('GraublauWeb.eot'); src: local('☺'), url('GraublauWeb.woff') format('woff'), url('GraublauWeb.ttf') format('truetype'); } h2 { font-family:'Graublau Web'; }
扩展阅读:
- CSS3 @font-face
- CSS3 @font-face Design Guide
- CSS @ Ten: The Next Big Thing
- CSS3 Transforms & @font-face Experiment.
- 35 Best CSS3 @font-face Kits
- CSS3 @Font Face
- @font-face
十七、页面水平居中
如何使一个网站的页面水平居中显示,我想这个不用我说大家也知道,因为大家肯定使用过多次了。
.wrapper { width:960px; margin:0 auto; }
扩展阅读
- Horizontally Center Your Website Structure Using CSS
- How to Center a Website With CSS
- Centering Your Web Site With CSS
- How to center content using CSS
- CSS Centering – fun for all!
- Absolute Center (Vertical & Horizontal) an Image
十八、最小高度min-height
在IE6浏览器下是不支持最小高度这个属性的,为了解决这个问题,我们可以使用下面这样的代码来处理:
.box { min-height:500px; height:auto !important; height:500px; }
扩展阅读
- Prop-Clear: CSS min-height hack
- min-height
- Cross-Browser Min Height
- min and max
- CSS layout: 100% height with header and footer
十九、垂直居中
水平居中处理起来相当的简单的,但是垂直居中处理起来还是相当的烦,特别是要兼容IE的浏览器情况下:
<p>CAN HAS VERTICAL CENTER?</p> <p> <img src="/pics/smiley.png" alt="Lorem Ipsum" height="35" width="35"> <span class="for_ie6"></span> CAN HAS VERTICAL CENTER? </p>
div { height: 100px; line-height: 100px; white-space: nowrap; } img { vertical-align: middle; } .for_ie6 { display: inline-block; } .for_ie6 { display: inline; }
扩展阅读
- CSS制作水平垂直居中对齐
- Vertical Centering in CSS
- Vertically center content with CSS
- How to: vertical centering with CSS is a post on The Hickensian
- Vertical Centering
- 6 Methods For Vertical Centering With CSS
- Vertical centering using CSS
- Centering things
二十、::selection
有很多朋友肯定不知道这个属性的作用。它可以改变选择的文本的背景色和前景色,突出你的浏览器中的选择文本效果:
::selection { color: #000000; background-color: #FF0000; } ::-moz-selection { color: #000000; background: #FF0000; }
扩展阅读
- CSS ::Selection
- Overriding The Default Text Selection Color With CSS
- CSS3 Tutorial: How To Change Default Text Selection Colour
- selection styles
上面给大家展示了二十种CSS技巧代码片段,我知道我还没有能够覆盖每一个有用的CSS技巧代码片段,但我搜集这些代码片段,只是希望对有需要的朋友有所帮助。如果你有其他更好的CSS技巧片段,希望在下面的评论中留下与大家共享。
如需转载烦请注明出处:W3CPLUS