CSS高级技巧汇总

| 大大范文

CSS不仅可以静态地修饰网页,还可以与各种脚本语言结合,动态地对网页各元素进行格式化。以下是一些CSS的高级技巧,由yjbys小编为大家分析:

使用:not()在菜单上应用/取消应用边框

CSS高级技巧汇总

首先为每个菜单项添加边框:

css

Copy code

.navli {

border-right: 1px solid #666;

}

然后移除最后一个元素的边框:

css

Copy code

.navli:last-child {

border-right: none;

}

或者直接使用:not()伪类来应用元素:

css

Copy code

.navli:not(:last-child) {

border-right: 1px solid #666;

}

这样的代码更清晰、易读、易于理解。

当然,如果新元素有兄弟元素,也可以使用通用的兄弟选择符(~):

css

Copy code

.navli:first-child ~ li {

border-left: 1px solid #666;

}

给body添加行高

无需分别为每个

、 等元素添加行高,只需添加到 body:

css

Copy code

body {

line-height: 1;

}

这样文本元素就可以从 body 继承。

所有一切都垂直居中

要将所有元素垂直居中,非常简单:

css

Copy code

html, body {

height: 100%;

margin: 0;

}

body {

-webkit-align-items: center;

-ms-flex-align: center;

align-items: center;

display: -webkit-flex;

display: flex;

}

注意:在IE11中要小心使用 flexbox。

逗号分隔的列表

使 HTML 列表项看起来像真正的、逗号分隔的列表:

css

Copy code

ul > li:not(:last-child)::after {

content:",";

}

对最后一个列表项使用:not()伪类。

使用负的nth-child选择项目

在 CSS 中使用负的 nth-child 选择项目1到项目n:

css

Copy code

li {

display: none;

}

li:nth-child(-n+3) {

display: block;

}

非常简单。

对图标使用SVG

对图标使用 SVG 是理所当然的:

css

Copy code

.logo {

background: url("logo.svg");

}

SVG对所有的分辨率类型都具有良好的扩展*,并支持所有浏览器回溯到IE9。这样可以避免使用 .png、.jpg 或 .gif 文件。

优化显示文本

有时字体在所有设备上都不能获得最佳显示,因此可以让设备的浏览器来帮助你:

css

Copy code

html {

-moz-osx-font-smoothing: grayscale;

-webkit-font-smoothing: antialiased;

text-rendering: optimizeLegibility;

}

注意:请谨慎使用 optimizeLegibility。此外,IE/Edge 不支持 text-rendering。

对纯CSS滑块使用max-height

使用 max-height 和 overflow: hidden 来实现纯CSS的滑块:

css

Copy code

.sliderul {

max-height: 0;

overflow: hidden;

}

.slider:hover ul {

max-height: 1000px;

transition: 0.3s ease;

}

继承box-sizing

让 box-sizing 继承于 html:

css

Copy code

html {

box-sizing: border-box;

}

*, *:before, *:after {

box-sizing: inherit;

}

这样在插件或者调整其他组件的时候更容易改变 box-sizing。

表格单元格等宽

表格工作起来很麻烦,因此务必尽量使用 table-layout: fixed 保持单元格的等宽:

css

Copy code

.calendar {

table-layout: fixed;

}

用Flexbox摆脱外边距的各种hack

当需要列分隔符时,通过 flexbox 的 justify-content: space-between 属*,你就可以摆脱 nth-、first- 和 last-child 的hack:

css

Copy code

.list {

display: flex;

justify-content: space-between;

}

.list.person {

flex-basis: 23%;

}

现在,列表分隔符就会在均匀间隔的位置出现。

使用属*选择器用于空链接

当 元素没有文本值,但 href 属*有链接时显示链接:

css

Copy code

a[href^="http"]:empty::before {

content: attr(href);

}

相当方便。

这些高级技巧在Chrome、Firefox、Safari、Edge的当前版本,以及IE11中都能有效工作。

 

第2篇:CSS高级布局技巧

IE8逐渐退出舞台,很多高级的CSS特*都已被浏览器原生支持,那么CSS怎么布局?有哪些技巧呢?下面yjbys小编为大家分享css样式布局技巧如下:

用empty区分空元素

兼容*:不支持IE8

假如我们有以上列表:

<p>a</p>

<p>b</p>

<p></p>

我们希望可以对空元素和非空元素区别处理,那么有两种方案。

用:empty选择空元素:

.item:empty{

display:none;

}

或者用:not(:empty)选择非空元素:

.item:not(:empty){

border:1pxsolid#ccc;

}

用:*-Of-Type选择元素

兼容*:不支持IE8

举例说明。

给第一个p段落加粗:

p:first-of-type{

font-weight:bold;

}

给最后一个img加边框:

img:last-of-type{

border:10pxsolid#ccc;

}

给无相连的blockquote加样式:

blockquote:only-of-type{

border-left:5pxsolid#ccc;

padding-left:2em;

}

让奇数列的p段落先死红*:

p:nth-of-type(even){

color:red;

}

此外,:nth-of-type还可以有其他类型的参数:

:nth-of-type(even)

:nth-of-type(3)

:nth-of-type(3n)

:nth-of-type(4n+3)

用calc做流式布局

兼容*:不支持IE8

左中右的流式布局:

nav{

position:fixed;

left:0;

top:0;

width:5rem;

height:100%;

}

aside{

position:fixed;

right:0;

top:0;

width:20rem;

height:100%;

}

main{

margin-left:5rem;

width:calc(100%-25rem);

}

用vw和vh做全屏滚动效果

兼容*:不支持IE8

vw和vh是相对于viewport而言的,所以不会随内容和布局的变化而变。

section{

width:100vw;

height:100vh;

display:flex;

align-items:center;

justify-content:center;

text-align:center;

background-size:cover;

background-repeat:no-repeat;

background-attachment:fixed;

}

section:nth-of-type(1){

background-image:url('unsplash.it/1024/683?image=1068');

}

section:nth-of-type(2){

background-image:url('unsplash.it/1024/683?image=1073');

}

section:nth-of-type(3){

background-image:url('unsplash.it/1024/683?image=1047');

}

section:nth-of-type(4){

background-image:url('unsplash.it/1024/683?image=1032');

}

body{

margin:0;

}

p{

color:#fff;

font-size:100px;

font-family:monospace;

}

用unset做CSSReset

兼容*:不支持IE

body{

color:red;

}

button{

color:white;

border:1pxsolid#ccc;

}

sectionbutton{

color:unset;

}

用column做响应式的列布局

兼容*:不支持IE9

nav{

column-count:4;

column-width:150px;

column-gap:3rem;

column-rule:1pxdashed#ccc;

column-fill:auto;

}

h2{

column-span:all;

}

 

第3篇:css 书写技巧 CSS 技巧教程简介

tuts带来的5个css书写技巧,简单翻译一下它的中心思想。

1.CSSReset/重置

你也许需要先了解什么是css重置。然后怎么样写css重置呢。

你可以copyEricMeyerReset,YUIReset或其它cssreset,但你接下来应该根据你的项目改成你自己的reset.

不要使用*{margin:0;padding:0;}。我个人很爱用,原作者提到使用这句并不适用一些元素比如单选按钮。不过俺博客里面也没有单选按钮,如果有,又重新给单选按钮重设就好了嘛。

2.按字母顺序来排列css

不按字母顺序排的

div#headerh1{

z-index:101;

color:#000;

position:relative;

line-height:24px;

margin-right:48px;

border-bottom:1pxsolid#dedede;

font-size:18px;

}

按字母顺序排的

div#headerh1{

border-bottom:1pxsolid#dedede;

color:#000;

font-size:18px;

line-height:24px;

margin-right:48px;

position:relative;

z-index:101;

}

理由是这样可以更好的找到某个属*。个人觉得还好,差别也不是太大。不过也许会适合你。

3.更好的组织css结构

使用css注释来分给css分组,这样结构明了,也有利于协同设计。

xxxxxxx{xxxxx}

xxxxx{xxxxx}

xxxxxxx{xxxxx}

xxxxx{xxxxx}

4.保持一致*

不要无意义的去讨论到底一个选择器的所有属*写在一行,还是每个属*写一行比较好。你自己觉得ok就好。

iv#header{float:left;width:100%;}

div#headerdiv.column{

border-right:1pxsolid#ccc;

float:rightright;

margin-right:50px;

padding:10px;

width:300px;

}

div#headerh1{float:left;position:relative;width:250px;}

比如我个人就喜欢写在一行,因为每排写一行会让整个文档感觉太长了,找起来不方便。如果你喜欢写一行,但是发给team的另一个,他却喜欢每排一行,那怎么办?其实很简单,把css拿去w3c验证,它会有一份结果,会自动转换成每排一行。

5.先标记后css

这个我没有太看懂。大概理解是对html的标记弄好后再写css会比较不容易出错。比如我写一个页面,先写一个最基本的标记结构

!<--endfooter--="">

然后就是尽量善用子选择器,而不是一要给哪个元素进行样式化,就给它添加个选择器。

 

上一篇:暂无

下一篇:特别的生日作文400字