CSS基础介绍

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 

CSS左右布局:css实现左右布局显示是前端进行页面设计的基础,也是全面了解并学习css一个很好的切入点,因为其中会涉及到对许多css基础点的认知。下面就介绍几种可以实现CSS左右布局的方法:

1. table---table的li实现  实现原理:table标签是能够具有实现左右布局的属性,也是我们项目中使用最多的。table布局也是页面布局中使用的最早的布局方式,随着前端技术的发展,table布局由于自身的局限性逐渐被div布局取代。

2.inline-block  实现原理:display:inline-block属性是介于行级元素(display:inline)和块级元素(display:block)之间的属性,它可以像行级元素一样水平布局,也可以像块级元素设置宽高属性,所以使用它可以进行左右布局。另:它不支持ie6、7浏览器,请注意,但是可以使用inline进行hack处理。

3.float实现左右布局   实现原理:float属性是css中关于布局的一个关键属性,其意为将该块状区域脱离父级标签的文档流,left属性值使该区域向父级标签区域的左侧边界放置,right属性值使该区域块向父级标签的右侧边界放置,如是利用该属性可以实现左右布局。 float属性属于布局属性,其中有着很多重要应用。

float属性的三个特性为:

a、包裹性:可以按照区域块中子元素的实际宽度进行包裹;

b、破坏性:float区域块不会被父级区域块包裹,造成前端常见的高度塌陷问题,解决办法是清除浮动;

c、占位性(个人称呼),浮动区域块虽然是脱离了父级区域,但是它是要占用一定的正常流区域的,即如果不清除浮动,我们会看到它会占用它后面的同级元素(如果没有会占用它父级后面的同级元素,如果还是没有则向上追溯)的区域,影响同级元素,所以常见清浮动。

4.基于css3中flexbox属性实现左右布局   实现原理:css3中出现了弹性盒子布局,即display:box;该种布局主要用于移动前端开发,因为该属性不支持ie6、7、8,支持chrome,firefox,ie9+,同时在移动端,主要是ios和Android中基于webkit内核的浏览器都是支持的,所以也是一种好的布局方式。

5.float+margin实现左右布局   实现原理:该部分以及向下主要说明两栏的左右布局的实现。 float能够使得元素向左或者向右靠边布局,如果在同级元素中设置一个正常流的区域与浮动块并列,则浮动块会在该正常流同级区域的边界处,只是浮动块会影响该区域块的布局,所以要清除浮动块的影响,所以此时将正常流区域块的盒子设置margin等于浮动块的宽度既可以清除影响。

6.block formate context(float+overflow)实现左右布局  实现原理:对于float对后面同级元素的影响,除了采用margin进行影响的清除,还可以在受影响的元素上添加overflow:hidden来清除浮动对该区域块带来的影响。具体原理是块级格式化上下文(BFC)的应用。

7.position:absolute左右布局   实现原理:除了float可以产生脱离文档流的布局现象以外,position:absolute也可以,但是二者又有不同之处。不同之处在于absolute可以覆盖任何位置的元素且不会影响正常流的布局,但是会产生遮盖,所以要求正常流要躲避绝对布局的遮挡。躲避方式可以使用margin。


CSS左中右布局:实现左中右布局,与实现左右布局类似,只是在左右布局的基础上再添加一个元素,从两个元素的布局增加到三个元素的布局,一下是实现左中右布局的几种方式:

1. float+margin

2. float+absolute

3. display:box;box-flex:1

4. display:flex;flex:1

CSS水平居中:在CSS中,不同元素解决水平居中的方案也不同,以下是常见的几种解决水平居中的CSS方案:

内联元素:只需要把行内元素包裹在一个属性display为block的父层元素中,并且把父层元素添加如下属性即可:

.parent{

text-align:center;

}

一个外联元素:将左右margin设置成自动即可。

.item {

/* 这里可以设置顶端外边距 */

margin:10px auto;

}

多个外联元素:

1.将元素的display属性设置为inline-block,并且把父元素的text-align属性设置为center即可。

.parent {

text-align:center;

}

2.使用flexbox布局,只需要把待处理的块状元素的父元素添加属性display:flex及justify-content:center即可。

.parent {

display:flex;

justify-conte;nt:center;

}

CSS垂直居中:实现原理与水平居中类似,以下是常见垂直居中CSS解决方案。

1.单个内联元素:

.parent {

background:#222;height:200px;

}

/* 以下代码中,将a元素的height和line-height设置的和父元素一样高度即可实现垂直居中 */

a{

height:200px;line-height:200px;

color:#FFF;

}


2.多个内联元素:使用display:table-cell和vertical-align:middle属性来定义需要居中的元素的父容器元素生成效果。

.parent {

background:#222;width:300px;height:300px;

/* 以下属性垂直居中 */

display:table-cell;vertical-align:middle;

}

3.已知高度外联元素:

.item{

top:50%;margin-top:-50px;

/* margin-top值为自身高度的一半 */

position:absolute;padding:0;

}

当然,CSS功能非常强大,作为初学者,后面还有很长的路要走,最后就介绍一些CSS的小技巧,以备不时之需:

1.Photoshop的混合模式:目前Firefox和Safari浏览器已经开始支持,但是在Chrome和Opera浏览器中需要添加前缀。

2.渐变边框:要使用渐变边框非常简单,只需要设置一个更低z-index的伪元素即可。

3.currentColor:使用这个方法来侦测当前的颜色,以避免经常地重复定义它。

4.Object Fit:设置一幅背景图background-size属性。

5.单选框和复选框的样式:可以隐藏了原有的复选框,改为使用伪元素和伪类:checked(IE9+)来表现它。当它被选中时,一个设置在content里的Unicode编码的字符将会显示出来。

6.CSS中的计数器:定义了一个ID在counter-reset属性中作为初始值(默认为0)。也可以设置另一个值在counter-increment属性中作为每一步的递增值。

7.高级CSS计数器

8.不使用图片的菜单图标:1.Shadows;2.Gradient;3.UTF-8;

9.@Supports:检测某些设定是否被浏览器所支持,并非所有的浏览器都支持它,但是你仍然可以使用它作为基本的检测手段。

10.visibility: visible:一个设置为visibility: visible的元素放在一个设置为visibility: hidden的元素里面,则父元素都被隐藏,而子元素不会。

11.position: sticky:运行效果和fixed相同,但不会挡住任何元素。

12.新的尺寸单位:vw (viewport width) - 浏览器窗口宽度的1%;vh (viewport height) - 同上,只不过用来描述高度;vmin and vmax 设置介于vh和vw之间的最大最小值。

13.文字修饰:修改文字被选中时的效果。

14.触摸屏当中的元素滚动:如果你需要在触摸屏当中为一些元素设置内滚动,那么你不仅需要overflow: scroll / auto ,还需要-webkit-overflow-scrolling: touch。

15.Unicode Classes:用Unicode符号明名class。这其实是用来搞笑的,千万不要在大型项目中使用,因为不是所有的电脑都支持Unicode符号。

16.垂直方向的百分比边距:子元素的百分比是相对于父元素的宽度。。

17.user-select 可以禁止用户选中文本。

18.修改浏览器的滚动条样式 ::-webkit-scrollbar-thumb,可以修改浏览器的滚动条样式。

19.ransform-style: preserve-3d 让元素支持3d。

20.perspective 透视:这个属性的存在决定你看到的元素是2d还是3d。一般设置在包裹元素的父类上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272