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文 ...
随机推荐
- Java中HashMap案例
package ch8; import java.util.*; /** * Created by Jiqing on 2016/11/27. */ public class MapTest { pu ...
- 一次tomcat服务器被入侵解决办法
突然tomcat目录下莫名其妙的多了几个war文件,里面内容只有一个index.jsp,打开控制台发现多了几个应用,我可以确定不是我部署上去的,顺着应用访问竟然看到了
- openfire升级指南
原文:http://www.liuhaihua.cn/archives/355.html 升级Openfire是和从头开始安装Openfire几乎一样简单.作为升级过程的一部分,它强烈建议您先备份当前 ...
- 将spring管理的bean使用注解的方式注入到servlet中
Filter和Servlet中不能直接注解使用spring的bean,因为这两个都是servlet容器维护管理的,当然也有实现方法,如下: 1.创建一个AbstractServlet 抽象类,让你的所 ...
- Android控件之ImageView(显示图片的控件)
一.ImageView属性: android:src = "@drawable/ic_launcher"——ImageView的内容图像(可以和android:background ...
- Redhat 6.4_联网 yum 配置
步骤简述----------------------------------------------------------------- 1. 准备软件包 下载第三步的软件包即可.由于是联网yum配 ...
- Global Alignment(全局比对)--从算法(Needleman-Wunsch)到python实现
很早就知道有全局比对和局部比对这两种比对方法,都是用到的动态规划的思想,知道一些罚分矩阵的概念,但一直都没有机会搞透彻,一些算法的细节也不太清楚,也没有亲手编程实现. 现在由于项目需求,需要手动写一个 ...
- 最大似然估计(Maximum Likelihood,ML)
先不要想其他的,首先要在大脑里形成概念! 最大似然估计是什么意思?呵呵,完全不懂字面意思,似然是个啥啊?其实似然是likelihood的文言翻译,就是可能性的意思,所以Maximum Likeliho ...
- 指针转换(C# 编程指南)
原文地址:https://msdn.microsoft.com/zh-cn/library/etb4xxec.aspx 下表显示了预定义的隐式指针转换.隐式转换可能在多种情形下发生,包括调用方法时和在 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...