CSS 奇技淫巧十八招
http://www.tuicool.com/articles/VZneI3
開始覺得自己會寫 CSS 也算有一段時間了,常常遇到一些非常實用的技巧不斷地反覆使用,但是我個人覺得對初學者來說很難從樣式作用上自己發現可以如此的用法。
例如 border-radius: 50%
現在已經成了大家隨手都會用來搓圓仔的標準寫法了,但不知道可以這樣直接設百分比從正方形變成圓形的初學者我猜應該也是不少。
正好最近在教人學習 CSS ,整理下來也方便自己備忘參考。
設定 margin 讓區塊置中
對,擺在第一個就是大家再熟悉不過的 margin: 0 auto
,為什麼列進來是因為只看 margin 的作用定義並無法得知瀏覽器會有這樣平均分配的行為,我自己一開始學的時候也完全不知道。另外 margin 能設定負值也算是這種沒接觸過體會不出來,但用起來就會覺得幸好可以如此的特性。
用 position 作相對基準
一樣也是很基本,但是 position: absolute
會以上層中最靠近的 position: relative
區塊為基準去定位,這就我來看也有點符合上述的定義,所以一起擺進來,當然以上這兩個其實比較算是初學者教材。
用 item + item 避開第一個項目
有時候清單項目之間會用框線做裝飾分隔,例如說用 li { border-top: 1px solid black }
加上 li:first-child { border: none }
,但其實可以直接 li + li { border-top: 1px solid black }
用 border 畫三角形
直接看 Creating Triangles in CSS ,常搭配在 pseudo-elements 上使用。
用 text-indent 做圖片取代
直接看 Replacing the -9999px hack (new image replacement) ,近兩年才開始廣為人知的新技巧。
用 counter 裝飾有序清單
搭配 pseudo-elements 來裝飾無序清單是常見的作法,至於有序清單就得用上 counter 來填入數字了, Automatic Numbering With CSS Counters 這篇有 counter 的用法介紹。
用 pseudo-elements 做 drop shadow
直接看 CSS drop-shadows without images 。
用 flexbox 讓 footer 置底
直接看 Sticky Footer ,flexbox 帶來的新可能性之一。
用 background-attachment: local 做捲動陰影
出自 Pure CSS scrolling shadows with background-attachment: local ,搭配多重背景去覆蓋做出的效果,所以缺點是不能使用透明背景。
根據內容項目總數做樣式變化
出自 Styling elements based on sibling count ,我想到的用法是可以在資訊圖表上做數量級標示。
用 pointer-event: none 讓目前選單連結失效
一般提到 pointer-event: none
都是用來做點擊穿透,但因此也有讓連結失效的作用,可以用在導覽選單的當前頁面項目上。例如: nav li.current a { pointer-event: none }
用 overflow 來清除 float
出自 Overflow – a secret benefit ,可以直接參考 OOCSS 相當出名的典範:Media Object 。
用 text-align: justify 分散排版
在之前的那篇 CSS 分散對齊橫列選單項目 有提過這個技巧,原理請看 Text-align: Justify and RWD ,由於選單用 flexbox 來排版會更適合,這個方法我通常用在一左一右兩個動作按鈕等開門式的排列上。
用 linear-gradient 作格線背景
參考 CSS3 Patterns Gallery 上的 Lined paper ,可以搭配 background-origin: padding-box
來校正,也可以用來輔助檢測 Vertical Rhythm 。
設定 animation-delay 為負值來製造動畫系列
直接看 CSS Animation Tricks: State Jumping, Negative Delays, Animating Origin, and More ,不然真的從來不知道可以使用負值。
用 :checked 狀態改造表單元素
以單選項目為例:
<input type="radio"><label>Yes</label>
input[type="radio"] { display: none }
input[type="radio"] + label::before {
content: '';
display: inline-block;
width: 16px;
height: 16px;
border-radius: 50%;
border: 1px solid black;
}
input[type="radio"]:checked + label::before { background-color: black }
其它表單元件也可根據不同狀態做出變化。
用 :target 狀態來切換顯示
參考 Creating a modern modal with CSS ,也很常搭配 Absolute Centering in CSS 的技巧加上極大的 box-shadow 數值來做出光箱效果。
單一邊緣的 box-shadow
看到 CSS Box Shadow 的最後,藉由 spread 給負值達成的效果。
除此之外,使用 inset 的內部陰影也可以做出單邊效果,
border-bottom: 1px solid #fff;
box-shadow: inset 0 -1px 0 0 #dcdcdc;
來讓單一邊緣的框線產生層次感。
以上就是目前我列出的十八招,也歡迎各位提供符合上述特點的實用技巧,希望我往後也會不斷更新這份清單。
CSS 奇技淫巧十八招的更多相关文章
- 决胜IT十八招-前言
决胜IT十八招 走资讯这一行转眼间八年多了,从大学的时候,我有长达十年的时间思索在从事软体开發这一行到底怎麽存活下来,这思考下来,为自己总算找到一个出口来,这十八招只是其一的绝学,见阵这一行干软体开發 ...
- Day 1-决胜IT十八招-前言
走资讯这一行转眼间八年多了,从大学的时候,我有长达十年的时间思索在从事软体开發这一行到底怎麽存活下来,这思考下来,为自己总算找到一个出口来,这十八招只是其一的绝学,见阵这一行干软体开發的变化也很大,从 ...
- windows快捷键十八式(win10)
胖友,如果你的电脑是windows系统,下面这十八招windows快捷键都不会,还敢说你会用windows? 说到windows的快捷键,当然不是只有ctrl+c,ctrl+v这么简单,今天我整理了一 ...
- Bootstrap <基础二十八>列表组
列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...
- Bootstrap <基础十八>面包屑导航(Breadcrumbs)
面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式.以博客为例,面包屑导航可以显示发布日期.类别或标签.它们表示当前页面在导航层次结构内的位置. Bootstrap 中的面包屑导航( ...
- Web 前端开发人员和设计师必读文章推荐【系列二十八】
<Web 前端开发精华文章推荐>2014年第7期(总第28期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十八】
<Web 前端开发精华文章推荐>2013年第六期(总第十八期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Bootstrap入门(二十八)JS插件5:工具提醒
Bootstrap入门(二十八)JS插件5:工具提醒 工具提示在使用过程中比较常见,但是实现起来有些麻烦,而bootstrap则很好地解决了这个问题. 我们来写一个简单的实例 先引入CSS文件和JS文 ...
随机推荐
- Maven核心概念之依赖,聚合与继承
一.依赖 我们项目中依赖的jar包可以通过依赖的方式(dependencies元素下添加dependency子元素)引入. <dependency> <groupId>juni ...
- (四)linux网络编程
一.CS架构,BS架构 (1)CS架构介绍(client server,客户端服务器架构),例如:qq.360网盘(2)BS架构介绍(broswer server,浏览器服务器架构)例如:浏览器 二. ...
- (五)stm32工程代码HardFault异常查错调试方法
一.导致异常的原因很多,例如:直接使用未分配空间的指针.栈溢出等一场非法操作便会使程序进入HardFault异常状态.下面介绍怎么找出程序中的异常. 接下来在keil_MDK工程中,编译代码,并deb ...
- Linux用户查询
用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd 查看可以登录系统的用户:cat /etc/pass ...
- Linux 命令速查
学生信,Linux是最最基本的技能,要尽量将自己的工作平台转移到Linux,编程写脚本,这样会极大的提升工作效率,找工作时也不会太怂.Linux所有的任务都是通过命令来完成的,具有高度的统一性.Lin ...
- javascript图片切换
JavaScript 图片滑动切换效果 作者:cloudgamer 时间: 2009-09-25 文档类型:原创 来自:蓝色理想 第 1 页 JavaScript 图片滑动切换效果 [1] 第 2 页 ...
- input上传图片预览
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- R语言与正态性检验
1.Kolmogorov-Smirnov正态性检验 Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法,若两者间的差距很小,则推论该样本取自某 ...
- HTML5自学笔记[ 15 ]canvas绘图基础6
关于线条的一些属性: lineCap,这个属性表示的是线条两端的样式,值有butt(默认)/round/square. lineJoin,这个属性表示线条相交的方式,值有miter(默认)/bevel ...
- java 三大框架 介绍
三大框架:Struts+Hibernate+Spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...