图文浅谈css3

css3已经“出来”挺久了,由最初的新奇,尝试,到现在慢慢的被习以为常的应用,特别是移动端需求的暴增,对css3更好的支持,吸引更多的人走了进来,但是,对于刚开始接触它的人来说,或许会有很多的混沌之处,毕竟它是个大宝藏,而多数人因应用的局限,了解的面也相对局限。本文就试图给出一个稍大范围的概括性展现。当然,也只是一部分。

一谈起css3,多数人可能首先想到的是各种炫酷的效果。的确,css3的出现的确是使得css的世界有了焕然一新,被解放了的感觉。以前需要用图片的,需要多个标签进行堆叠的,需要用js的,需要用flash的等等,甚至是几乎想不到办法去做的东西,css3都给了我们相应的补偿。

但是,今天我不去从那些方面开始谈,我会按照某种分类把css3来个整体浏览。目的是让对css3不太了解的人能有个大概的了解,我自己也算是复习一下。另外,此文不会列出一堆代码给你看。

布局

Css最重要的一个作用,就是布局,而初学css3的朋友可能会因为种种原因忽视掉它,原因有二。

  1. 被各种酷炫的新“功能”给蒙蔽了,觉得那就是css3~
  2. 没觉得之前的css布局方法有什么不好,觉得够用了,不遇到新的问题或者没人提起,就不会去在意。人总是容易知足的~

灵活的Flexbox

小谈一下float,很多解析float的文章都提到float本身在设计之初并不是用来布局的,而是用于图文混排。而且浮动的元素会脱离正常的文档流,要闭合浮动。目前的很多网页都是滥用浮动,如之前的滥用div般,随处可见fl、fr,然后来个clearfix,万事大吉!这种现象已经被人批过很多次了。

Flexbox能干嘛呢?

当你给父容器应用了display:flex;(注:flexbox在发展过程中有多个版本,此写法为最新版本) 那么它的子元素经过简单的相应设置可实现: 横/竖排

  1. 整体左中右(水平)、整体上中下(垂直)
  2. 倒序排列、任意顺序排列(在不改动html结构的情况下)
  3. 多余空间分配,元素超出处理。
  4. 子元素可单独设置自身的属性。 等等 如下

多栏布局Multi columns

顾名思义,就是多栏,它的灵活之处在于,可以随意设置栏数、栏宽、栏间隔、栏分割线等,同时你不需要用同样数目的容器去放内容,它会按照你所设置的那样乖乖的排布,一个用的最多的形容便是像报刊、杂志那样的排版方式。如下

Calc()

calc是英文单词calculate(计算)的缩写,可以使用calc()给元素的border、margin、pading、font-size和width等属性设置动态值。为何说是动态值呢?因为我们使用的表达式来得到的值。calc()最大的好处就是用在流体布局上,可以通过calc()计算得到元素的宽度。 为什么需要计算呢?有个问题大多数人应该都遇到过,那就是元素设置的有border、padding等,而且是具体的值,比如px或者em、rem等。但元素本身是不定宽,这个时候,那么还怎么去设置元素的宽? calc()就是给我们开发者提供了方便,把问题交给了浏览器。 比如这样:width:calc(100% - (10px + 5px) * 2); 当然,你应该想到了,它能解决定宽不定宽并存的问题。

Grid Layout(网格布局)

这种布局方式,跟flexbox有相似之处,也有人拿二者作比较,这段就简要介绍一下它。 乍一看,它会很像表格,但它不是由html所写出的表格,而是由css来进行设置。 它可以依赖于媒体查询根据不同的上下文重新定义布局,还可以让我们摆脱现在布局中存在的文档流限制,你的结构不需要根据设计稿从上往上布置了。这也意味着您可以自由地更改页面元素位置。

摆脱图片,代码来搞定

阴影

包括text-shadow、box-shadow

圆角border-radius

突破了以往只能是方形盒子,或者需要用多余标签和图片来制作圆角效果的情况。

渐变gradient

渐变在网页设计中随处可见,常用在背景上,以前遇到渐变,只能通过切图,哪怕是一张很小的图进行平铺。有了这个属性,提供了多一种用代码解决的方案。

给图片加上“翅膀”

图像边框border-images

以前,边框只能是有限的几种线性,想做出更丰富的效果是做不到的,但有了这个属性之后,你的创造力+合适的方式,便成创造出很好的效果。

多背景图backgrounds

在之前,一个元素同时添加两张背景图是做不到的,但有了这个属性,就解决了这个问题,你不仅可以添加多张图作为背景,还可以控制它们的位置。

遮罩mask和滤镜filter

这两个用过ps的都知道会是什么效果,但现在为止,浏览器对它们支持的不是很好,在网页上应用的也很少,就不多说了。

媒体查询 Media query

这个东西也是很多人开始接触css3就了解的东西,它算是一个亮点,给开发者提供了一个为不同设备应用不同样式的方式。特别在现在这种移动设备多种多样的情况下,更加的体现价值。

选择器

这是css3一大亮点,相比之下,以前的选择器显得很单调了,也直接导致了页面当中会出现很多为了效果而加的钩子,多了之后会进一步导致命名的困难,如果类和元素关联的比较密切,或者规划的不好,就会出现要嵌套很多层去增加权重,性能也随之降低等,所以,这是个系列问题。Css3新增的选择器则有了诸多筛选的标准,比如第几个,偶数、奇数个,否定,空元素,属性选择等等。

盒模型 Box-sizing

或许每个人都会犯过这样一个错误,给一个元素设置了宽度之后,再设置padding,呀?!怎么溢出了?这是为什么?就是盒模型在作怪。目前这些版本的浏览器默认设置的width是不包括padding的,你可以通过box-sizing来改变它。

Rem

提供了一种相对于根元素定义大小或者长度的方式。

自定义字体 @font-face

这个规则同样是css3的亮点,每位做前端开发的人都碰到过这个问题——视觉稿里面的字体好好看,可自己的电脑上面没有那种字体,好,索性找设计师要那种字体然后装在自己的电脑上,可问题又来了,我自己能看到了,用户怎么办?@font-face为我们带了曙光。

Css3的那些炫技

好吧,虽然这篇文章好像在故意的“避谈”这些东西,还是不得不谈~为什么避谈呢,在文章的第一段已经做了说明,就像是有一种行为总是被批一样——“哇,这个做得看起来很不错哦,html5做的吧?”其实可能一点html5的东西都没有用,只是用了css3或者js,同样,对于看到一些动画,就联想到css3,仿佛css3=动画的看法,也是错误的,css3的宝藏还有很多。

Transform、translate、transition,傻傻分不清楚?

这几个东西对于初学者来说还是可能会迷糊,当然,如果看了上面我提供的那张图应该不会了。

Tansform是用来控制几种形变或位置变化,比如rotate(旋转)、skew(扭曲)、scale(缩放)等,很多动画都离不开它。Translate(平移)也是其中一种。

Transition为对象的状态变化提供一个过渡的过程,而不是像以前一样突变。当然,它可以用来做动画效果。

Animation

一说到动画,以前都是结合着js或者Flash来做的,html5的canvas也不例外。但到了css3,引入了animation,再配合一些其他一些可以控制元素位置和形状以及外观的属性,就能做出动画来。

它还有许多有用的小东西,比如shapes,可以让你在图文混排时做出圆弧边缘或者各种不规则形状等等。

css3给我们带来了什么?

至少从目前看来,某种程度上提高了制作某些效果的效率、提供了多一些方案、使代码的维护更加方便,性能也得到了提升。也让css的世界变得更加丰富多彩。

当然,一项技术能用好,光是知道这些东西远远不够,起码要做到几点:功能性、完整性、灵活性、实用性、合理性。若能做到这几点,那便是很高的境界,能够挥洒自如。

此文只是提供了一些粗线条的东西,虽然参考了一些资料,比如

w3cplus css.doyoe.com/ ued.ctrip.com/webkitcss/

但难免有不当之处,欢迎交流。

时间: 2024-10-12 12:46:40

图文浅谈css3的相关文章

浅谈CSS3 Filter的10种特效

Filters主要是运用在图片上,以实现一些特效(尽管他们也能运用于video上).但是,我们主要讨论的是Filter图片上的运用. 再来,介绍一下Filters的语法:Filters使用时候的语法非常简单,例如: elm { filter: none | <filter-function > [ <filter-function> ]* } 它的默认值是none,且不具备继承性.其中filter-function具有以下可选值: 1.grayscale灰度 2.sepia褐色 3

浅谈css3弹性盒子模型

昨晚听了一个微信小程序的公开课,在布局时,无意间看到了弹性盒子的身影,之前只知道box-flex,但是由于兼容性问题,使用者很少,毕竟市面上的大多浏览器都必须加前缀才能实现,也就意味着多写几行代码,其实这都不是事,可是大部分CXY都比较懒,能一行代码搞定的事绝不写两行.废话有点多了.转回正题. 我学东西遵循着,是什么?为什么?怎么用?有什么问题?下面我就按这四个方向深入聊聊,水平有限,有问题的地方请多多指教.. 一.是什么? 相信大多数CXY遇到问题,不知是骡子还是马,都会习惯性谷歌之,我也不例

浅谈 css3 box盒子模型以及box-flex的使用

display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分.   一.使用以及介绍: 1.要实现水平或者垂直切分,必须先满足以下要求 i. display : box必须用在对应的父窗口,比如div.parent>div.panel*3 这种格局, parent 必须先先定义此属性 ii. .panel的元素定义box-flex,来实现按比例切分.如下图:就是将三个di

浅谈css3有意思的属性pointer-events: none;

pointer-events: none: 可以让某个元素实现类似于海市蜃楼的效果,具体理解为,你可以看的到某个元素,但是你无法摸的着.   而display:none; 是你摸不着,但是你也看不见.   pointer-events: none:摸不着,但是看得见.如果把某个元素再加上opacity:0:则可以很容易实现类似display:none:的效果(摸不着,看不见). 原文地址:https://www.cnblogs.com/teamemory/p/9889008.html

图标字体化浅谈[转]

在做手机端Web App项目中,经常会遇到小图标在手机上显示比较模糊的问题,经过实践发现了一种比较好的解决方案,图标字体化.在微社区项目中,有很多小的Icon(图标),如分享.回复.赞.返回.话题.访问.箭头等,这些Icon(图标)一般都是纯色的.开始制作时考虑用双倍大小的Sprite图,通过CSS样式设置只显示二分之一尺寸,这样在Retina屏上显示的大小是正常的,一旦放大屏幕后图标又变得模糊不清,测试的效果不是很理想,后来又考虑多套图标适配方案.SVG矢量图等,都因为种种原因放弃掉了(如多套

浅谈移动前端的最佳实践(转)

前言 这几天,第三轮全站优化结束,测试项目在2G首屏载入速度取得了一些优化成绩,对比下来有10s左右的差距: 这次优化工作结束后,已经是第三次大规模折腾公司框架了,这里将一些自己知道的移动端的建议提出来分享下,希望对各位有用 文中有误请您提出,以免误人自误 技术选型 单页or多页 spa(single page application)也就是我们常常说的web应用程序webapp,被认为是业内的发展趋势,主要有两个优点: ① 用户体验好 ② 可以更好的降低服务器压力 但是单页有几个致命的缺点:

浅谈算法和数据结构(1):栈和队列

浅谈算法和数据结构(1):栈和队列 2014/11/03 ·  IT技术                                         · 2 评论                                      ·  数据结构, 栈, 算法, 队列 分享到: 60 SegmentFault D-Day 2015 北京:iOS 站 JDBC之“对岸的女孩走过来” CSS深入理解之relative HTML5+CSS3实现春节贺卡 原文出处: 寒江独钓   欢迎分享原创

转:浅谈CSS在前端优化中一些值得注意的关键点

前端优化工作中要考虑的元素多种多样,而合理地使用CSS脚本可以在很大程度上优化页面的加载性能,以下我们就来浅谈CSS在前端优化中一些值得注意的关键点: 当谈到Web的“高性能”时,很多人想到的是页面加载时间,但其实性能不仅仅是指加载时间,还包括浏览器性能.网络性能.开发效率.在Web前端开发中,性能是一个非常重要的需要考虑的点.本文将介绍一些开发原则和性能准则,这些都是提高Web前端性能的基础. 1. 开发原则 1.1 编写符合当代浏览器性能的代码如果想提高前端性能,就必须理解浏览器的工作原理,

浅谈前端性能优化(移动端)

上一篇讲了PC端的部分:前端性能优化(PC端),这次继续说移动端的.相对于PC端的,移动web浏览器上有一些明显的特点:设备的屏幕小.新特性兼容性较好.支持一些比较新的HTML5和CSS3.需要与Native应用交互等.但移动端可用的CPU资源和网络资源极为有限,因此要做好移动端web上的优化往往需要考虑做更多的事情.首先在移动web的前端页面渲染中,PC的优化规则同样适用,此外针对浏览器也要做一些更细节的优化达到更好的效果.需要注意的是,并不是移动端的优化在PC端不适用,而是由于兼容性的原因,