`
ice-cream
  • 浏览: 320618 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

提升你设计水平的CSS3新技术(上)

    博客分类:
  • Css3
阅读更多

级联样式表在13年前被引入,而且被广泛使用的CSS 2.1 标准在11年前被创建,显然我们现在已经与当年相差千里了。相当了不起的是期间网站开发有了多少进步——事实上,我们也无法想象。

为什么会这样呢,当提到CSS的时候,过去我们是如此的不情愿和害怕尝试?为什么我们还要使用讨厌的hack和依赖JavaScript的技术来写样式?为什么我们不能利用丰富的CSS3 特性和现代浏览器中可用的工具 并将我们的设计品质带到下一个等级?

是时候在我们的项目中引入CSS3 特性了,不用害怕逐渐在我们的样式表中加入css3特性和选择器会出问题。让我们的客户意识到CSS3的优势 (而且让旧浏览器更快的消失)是我们力所能及的事情——我们应该这样做,特别是在它能够让网站更加灵活并减少开发和维护成本的时候。

在本文中,我们将研究CSS3的优势,并看一下一些网页设计师是如何使用它们的。最后,我们将了解到从CSS3中我们能得到什么以及我们如何在我们的项目中使用它的新特性。

同时请参考我们之前的一篇相关文章:

使用浏览器专有属性

为了使用大部分CSS3特性,我们不得不与原来的属性一起使用生产商专有扩展。原因是直到现在,大部分浏览器只支持部分CSS3属性。而且不幸的是,一些属性甚至到最后都可能不被W3C推荐,所以通过指定浏览器专有属性,将他们与标准属性区分开来是很重要的(然后在他们是多余的的时候使用符合标准的样式将之覆盖)。

当然,这种方法的劣势是,将导致一个杂乱的样式表和网站在浏览器之间的表现不一致。毕竟,我们不想在我们的样式表中重拾私有浏览器hack的需求。Internet Explorer的臭名昭著的marqueeblink以及其它标签在大量样式表中被应用,并在20世纪九十年代成为一个传奇;它们依然让现存的很多网站(在其他浏览器中)表现不一致甚至难以阅读。而我们现在也不想将我们自己置于同样的境地,对吧?

然而,网站不需要在所有的浏览器中看起来必须严格的一致。有的时候在某个浏览器中使用私有属性来实现特定的效果是可行的。

最常见的私有属性是用于Webkit核心浏览器的(比如, Safari), 它们以-webkit-开始,以及Gecko核心的浏览器(比如, Firefox),以-moz-开始,还有Konqueror (-khtml-)、Opera (-o-) 以及Internet Explorer (-ms-)都有它们自己的属性扩展(目前只有IE8支持-ms-前缀)

作为专业的设计师,我们不得不注意:使用这些私有属性将让我们的样式表不能通过验证。所以目前将他们放到最终版的样式中是少见的。但是在某种情况下,比如试验或学习,我们至少可以考虑将他们和标准的CSS属性一起写到一个样式表中。

扩展阅读

1. 选择器

CSS选择器是个难以置信地强大的工具:它们允许我们在标签中指定特定的HTML元素而不必使用多余的class、ID 或JavaScripts。而且它们中的大部分并不是CSS3中新添加的,而是没有被得到应有的广泛应用。如果你在尝试实现一个干净的、轻量级的标签以及结构与表现更好的分离,高级选择器是非常有用的。它们可以减少在标签中的class和ID的数量并让设计师更方便的维护样式表。

属性选择器

三个新的属性选择器被添加到CSS3:

  • [att^="value"]
    匹配包含以特定的值开头的属性的元素
  • [att$="value"]
    匹配包含以特定的值结尾的属性的元素
  • [att*="value"]
    匹配包含含有特定的值的属性的元素

tweetCC targeted link

tweetCC 使用一个属性选择器来指定有title属性并以字符“tweetCC”结尾的链接:

a[title$="tweetCC"]{
    position: absolute;
    top: 0;
    right: 0;
    display: block;
    width: 140px;
    height: 140px;
    text-indent: -9999px;
    }

浏览器支持:只有IE6不支持CSS的属性选择器。IE7和IE8、Opera、Webkit核心和Gecko核心的浏览器都支持。所以在你的样式中使用属性选择器是比较安全的。

连字符

CSS3中唯一新引入的连字符是通用的兄弟选择器(同级)。它针对一个元素的有同一个父级节点的所有兄弟级别元素。

比如,给某个特定的div的同级的图片添加一个灰色的边框(div和图片应该有同一个父级节点),在样式表中定义下面的样式就足够了:

div~img {
	border: 1px solid #ccc;
	}

浏览器支持:所有的主要浏览器都支持这个通用的兄弟选择器除了我们最爱的IE6

伪类

或许在CSS3中增加最多的就是新的伪类了,这里是一些最有趣和最有用的:

  • :nth-child(n)
    让你基于元素在父节点的子元素的列表位置来指定元素。你可以是用数字、数字表达式或oddeven 关键词(对斑马样式的列表很完美)。所以如果你想匹配在第四个元素之后的一个3个元素的分组,你可以简单的这样使用:

     

    :nth-child(3n+4) { background-color: #ccc; }/*匹配第4,7,10,13,16,19...个元素*/
  • :nth-last-child(n)
    与上个选择器的思想同样,但是从后面匹配元素(倒序),比如,为了指定一个div里面的最后两个段落,我们可以使用下面的选择器:

     

    div p:nth-last-child(-n+2)
  • :last-child
    匹配一个父节点下的最后一个子元素,等同于

     

    :nth-last-child(1)
  • :checked
    匹配选择的元素,比如复选框
  • :empty
    匹配空元素(没有子元素)。
  • :not(s)
    匹配所有不符合指定声明(s)的元素。比如,如果你想让所有的没有使用”lead”类的段落的显示为黑色,可以这样写:

     

    p:not([class*="lead"]) { color: black; }

    .

Andrea Gandino 在他的网站上使用:last-child 为选择器指定每篇日志的最后一个段落,并将其的外间距(margin)设置为0:

Andrea Gandino uses the :last-child pseudo-element on his blog post paragraphs

#primary .text p:last-child {
    margin: 0;
    }

浏览器支持: Webkit核心和Opera 浏览器支持所有新的CSS3 伪类,Firefox 2 和3 (Gecko核心) 只支持:not(s), :last-child, :only-child, :root, :empty, :target, :checked, :enabled:disabled,但是Firefox 3.5 将更加广泛的支持CSS3 选择器。Trident核心浏览器(Internet Explorer)事实上不支持这些伪选择器。

伪元素

在CSS3中唯一引入的伪元素是::selection.它可以让你指定被用户高亮(选中)的元素。

浏览器支持: 目前没有任何一款Internet Explorer 或Firefox 浏览器支持::selection 伪元素。Safari, Opera 和Chrome 均支持。

扩展阅读

2. RGBA和透明度

RGBA 让你可以不仅仅设定色彩,还能设定元素的透明度。一些浏览器尚不支持它,所以最好在RGBa前面设定其它浏览器支持的没有透明的颜色属性。

Tim Van Damme's hover effects
Tim Van Damme在链接的hover效果上使用了RGBA

在这个网站上,Tim Van Damme在鼠标悬停效果上使用了RGBa;例如,在他的首页的network链接上:

#networks li a:hover,
#networks li a:focus {
    background: rgba(164, 173, 183, .15);
    }

当设定一个RGBA 色彩的时候,我们必须依次设定红、蓝、和绿色的值,可以是0-255或百分数。透明值应该在0.0到1.0之间,例如0.5 代表50% 的透明度。

RGBA 和opacity 之间的不同是前者只会应用到指定的元素上,而后者会影响我们指定的元素及其子元素。

这里有个例子展示我们如何给一个div添加80% 透明:

div {
	opacity: 0.8;
	}

浏览器支持: RGBA 被Webkit内核浏览器支持。IE所有版本都不支持。Firefox 2也不支持,但是Firefox 3 和Opera 9.5均支持。Opacity 被Opera、Webkit核心 和Gecko核心的浏览器支持。IE所有版本同样不支持。IE只支持自家的该死的滤镜(filter)

扩展阅读:

3. 多栏布局

这是新的CSS3 选择器可以让你不用使用多个div标签就能实现多栏布局。浏览器解释这个属性并生成多栏,让文本实现一个仿报纸的多栏结构。

tweetCC's home page
tweetCC 在其首页使用了CSS3 多栏选择器

tweetCC 在其首页上将介绍文字显示为四栏。这四栏并非浮动的div;相反,设计师使用下面的CSS3 多栏布局:

.index #content div {
    -webkit-column-count : 4;
    -webkit-column-gap : 20px;
    -moz-column-count : 4;
    -moz-column-gap : 20px;
    }

我们可以通过这个选择器定义三件事情:栏数(column-count)、栏宽(column-width、例子中没有用到)和各栏之间的空白/间距(column-gap)。 如果column-count未设定,浏览器会在允许的宽度内容纳尽可能多的栏目。

为了在各栏时间添加一个数值的分隔,我们可以使用column-rule 属性,其功能和border 属性类似:

div {
    column-rule: 1px solid #00000;
    }

上面的这条属性,浏览器中不会看到任何效果,因为它没有分栏,如果配合上面的例子就可以了。

相关属性: column-break-after, column-break-before, column-span, column-fill.

浏览器支持: 多栏布局目前被Safari 3+,chrome,和Firefox 1.5+所支持。

扩展阅读:

4. 多背景图

CSS3 允许你使用多个属性比如background-imagebackground-repeat, background-size, background-position, background-origin and background-clip等在一个元素上添加多层背景图片.

在一个元素上添加多背景的最简单的方法是使用简写代码,你可以指定上面的所有属性到一条声明中,只是最常用的还是image, position 和repeat:

div {
	background: url(example.jpg) top left no-repeat,
		url(example2.jpg) bottom left no-repeat,
		url(example3.jpg) center center repeat-y;
	}

第一个图片将是离用户“最近”的那个。

该属性的一个更复杂的版本可以是这样的:

div {
	background: url(example.jpg) top left (100% 2em) no-repeat,
		url(example2.jpg) bottom left (100% 2em) no-repeat,
		url(example3.jpg) center center (10em 10em) repeat-y;
	}

在这里,(100% 2em)background-size 的值;第一个背景图片将会出现在左上角并会被拉伸至该div的100%宽度和2em的高度。

因为只有少数的浏览器支持它,又因为在网站上不显示背景有损网站的视觉效果,所以,这并不是一个被广泛应用了的属性。尽管如此,它显然能够大大地提高设计师的工作流并显著减少标签数量——相对于用其它方式实现同样的效果。

浏览器支持: 目前,多背景图片只在Safari/chrome 和Konqueror中有效

扩展阅读:

5. Word Wrap

word-wrap 属性用来防止太长的字符串溢出的。可以用两个属性值normalbreak-wordnormal 值(默认的) 只在允许的断点截断文字,如连字符。如果使用了break-word ,文字可以在任何需要的地方截断以匹配分配的空间并防止溢出。

WordPress admin area
WordPress 后台在数据表中使用了word-wrap.

WordPress 的控制面板中,word-wrap 属性被用于表格中的元素;比如在日志和页面的列表中:

.widefat * {
    word-wrap: break-word;
    }

浏览器支持: word-wrap 被Internet Explorer 和Safari/chrome支持。Firefox 将在3.5版本中支持它。

扩展阅读:

6. 文字阴影

尽管在CSS2中就已经存在,text-shadow是一个未被广泛应用的CSS属性。但是它将在CSS3中被广泛采用。这个属性给设计师一个新的跨浏览器的工具来为设计添加一个维度以使文字醒目。

尽管这样,你需要确认,你的设计中的文字是可读的,以防用户的浏览器不支持CSS3高级属性。给文字和背景色彩足够的对比度以防text-shadow 属性不能被浏览器正确渲染或理解。

Beak uses the text-shadow-property of CSS 3
Beakapp 在它的网站中使用了text-shadow 属性:内容区域.

BeakApp.com 为内容区域使用了text-shadow 属性,为文字添加深度和维度 并让它变得醒目——而不是使用某种图片替换技术。该属性目前只在Safari和Chrome中可用。

该网站的主菜单使用的CSS如下:

.signup_area p {
	text-shadow: rgba(0,0,0,.8) 0 1px 0;
}

这里我们使用阴影颜色(使用了RGBA,前面有描述), 然后是右(x 坐标) 和底部(y 坐标) 偏移,最后是模糊半径

如果要在一个文字上使用多阴影,可以使用逗号分开。比如:

p {
    text-shadow: red 4px 4px 2px,
		yellow -4px -4px 2px,
		green -4px 4px 2px;
    }

浏览器支持: Webkit核心浏览器和Opera 9.5 支持text-shadow。Internet Explorer 不支持它,Firefox 将在即将发行的3.5版本中支持。

扩展阅读:

7. @font-face属性

尽管是最被期待的CSS3 特性 (甚至它在CSS2中就已经被引入了), @font-face在网站上仍然没有像其它CSS3属性那样被广泛采用.这主要因为字体授权和版权问题:嵌入的字体很容易从网站上下载到,这是字体厂商的主要顾虑。

尽管如此,授权我呢提貌似已经开始解决了。TypeKit 承诺将制定一个方案,以使设计师和字体厂商更容易的统一授权问题,这将显著的充实网站设计中的排版并使@font-face 属性在实际工作中可用。

Mozilla Labs JetPack font
Mozilla实验室JetPack 网站采用font-face规则来使用DroidSans 字体。

少数使用该属性的网站之一是新上线的JetPack MozillaLabs.

@font-face{
    font-family: 'DroidSans';
    src: url('../fonts/DroidSans.ttf') format('truetype');
    }

要想在你的网站中使用嵌入字体,你必须独立的生命每个样式(比如, normal, bolditalic)。请确保只使用被授权为使用到网站的字体并在需要的时候给字体的设计师一些表扬。

在定义了@font-face 规则之后,你就可以用普通的font-family 属性来引用该字体了:

p {
    font-family: "DroidSans";
    }

如果一个浏览器不支持@font-face,它将使用font-family(CSS 字体库)属性中指定的下一个字体。对支持的浏览器来说,如果@font-face 字体是一个奢侈品(只有少数元素用到),这对一些网站是可行的;但是如果该字体在设计中占有一个主要的角色或者是公司的视觉特征的一部分,你就可能想使用其它的解决方案,比如sIFRCufón。尽管如此,请记住,这些工具对标题或较短的文字更适合,复制和粘贴此类内容比较困难而且对用户并不友好。

 
在网站中使用此类字体不是很好吗?Dave Shea 使用CufónMuseo Sans来做的实验。很漂亮!

浏览器支持: @font-face 被Safari 3.1+和chrome支持。Internet Explorer 支持EOT 字体。 Opera 10 和Firefox 3.5 将会支持它。

 

扩展阅读:

 

 

提升你设计水平的CSS3新技术(下)

 

原文:用CSS3将你的设计带入下个高度
译自:Take Your Design To The Next Level With CSS3
版权所有,转载请注明出处,多谢!!

  • 大小: 53.7 KB
  • 大小: 34.5 KB
  • 大小: 40.8 KB
  • 大小: 99.3 KB
  • 大小: 36.4 KB
  • 大小: 40.1 KB
  • 大小: 63.1 KB
  • 大小: 36.3 KB
分享到:
评论

相关推荐

    HTML5+CSS3+jquery应用之美

    通过八大商业案例,以HTML5搭建结构、CSS3设置样式、jQuery实现动态应用这三者相结合的实际应用方式,详细讲解它们的新技术点,以及流行应用热点的设计思路与制作方法。技术核心穿插在实际操作中阐述,更便于读者在...

    前端体验设计——HTML5CSS3终极修炼

    资源名称:前端体验设计——HTML5 CSS3终极修炼内容简介:本书是Web设计畅销书《超越CSS》作者力作,结合当前移动互联网下的硬件变化情 况,以一个Web设计发者的视角,将老的工作方法与新技术相结合,通过丰富的案例...

    前端体验设计 HTML5+CSS3终极修炼

    本书是Web设计畅销书《超越CSS》作者的最新力作,结合当前移动互联网下硬件的变化,以一个资深Web设计...并通过挖掘高级布局方式、无障碍页面、语义化标签、高级CSS技巧等内容,快速提升读者的视野与设计开发水平。

    众妙之门 网页排版设计制胜秘诀

    《众妙之门——网页排版设计制胜秘诀》囊括了字体抗锯齿技术,网页排版的原则,网页字体的设置技巧,CSS字体堆栈指南,CSS3的新特性,网页字体服务推荐以及排版工具介绍,等等。 还在为网页排版苦恼吗?想设计出...

    [期末网页作业]-小米官网(html+css+js)

    今天,我非常高兴地向大家展示我的最新成果——仿写小米官网的页面。经过一个漫长的期末考试季节,我终于完成...作为一个开发者,我非常珍惜每一次机会展示自己的成果,并且期待能够不断提升自己的技术水平。谢谢大家!

    本手册针对的是已有一定前端开发(网页设计制作)经验的读者

    也讲述脚本(JScripts)、样式表(CSS)、HTML4.0等技术。 可以提升专业的手写代码、优化网页、脚本编程、图片处理、网站策划的能力。 能够熟练使用或很快上手任何常见的和网页制作有关的代码编辑、图片处理等工具软件...

    Air-Quality-Visualisation-AQV:俗话说:“一张图片值一千字。” 没有视觉巫术,数据科学领域是不完整的。 尽管年代久远的表格和图表仍然可以解释大多数数据,但最新的D3,JS库以及R,Tableau,SAS等中的特殊绘图,已将可视化领域提升到了一个新的水平。 可视化是一种以简单且易于理解的方式解释数据的技术。 该问题使我们面临以下提到的参数的挑战,需要提供直观易懂的可视化效果

    尽管年代久远的表格和图表仍然可以解释大多数数据,但最新的D3,JS库以及R,Tableau,SAS等中的特殊绘图,已将可视化领域提升到了一个新的水平。 可视化是一种以简单且易于理解的方式解释数据的技术。 此问题使我们...

    MF00736-Java智慧小区管理系统源码.zip

    提升物业管理水平,提高工作效率,降低成本,便于物业快速回收物业费; 扩大服务范围和能力,方便住户,提升用户满意度;为物业公司扩展了新的收入渠道: 租赁中介、社区团购、物业服务;为住户缴纳物业费、水电、...

    全功能的地方视窗综合网站源代码

    本系统历经网软团队一年之久设计开发而成,经过了周密的的项目调查、分析、策划, 系统功能专业、强大、易用,并采用顶尖水平的的人性化界面设计,技术上采用微软先进的.NET2.0(C#)+SQL构架,并融入了大量WEB2.0元素...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    ASP.Net MVC是微软推出的区别于ASP.Net WebForm的Web开发新技术,由于ASP.Net MVC解决了ASP.Net WebForm的很多缺点,非常适合大型、中型项目的开发,一经推出就受到了.Net开发社区的追捧,很多.Net开发人员的职位...

    CodingWithMitch-Blog-Course:面向初学者的Django(Python)Web开发

    了解如何使用Django (一个Python的网络开发框架)构建网站。 在课程中,您将学到: ...然后,我们将通过在网站上构建REST API将开发提升到一个新的水平,以便其他技术可以与之通信(例如:一个android应用) 。

    python项目基于深度学习的安全帽佩戴检测wlw.zip

    该项目具有重要的实际应用价值,因为它有助于提高安全管理水平并预防工业事故的发生。 主要特性和功能可能包括: 1. **实时监控**:通过摄像头捕获实时视频流,并对每一帧图像进行分析,以识别是否有人员未佩戴...

    IONIC 功能全演示

    但是有了基于nodejs的javascript完整开发周期环境,会极大提升开发效率,保障质量。 - nodejs 最新版。 - 有些node包的安装需要c++编译,x86版本只需要 x86的C++编译器,windows上的x64 c++编译器需要特别设置。 - ...

    html入门到放弃笔记

    3、主要技术 1、HTML 2、CSS 3、Javascript 2、HTML入门(重点) 1、什么是HTML Hyper Text Markup Language 超级 文本 标记 语言 超文本 :也是文本,但会具备特殊功能 普通文本 a : 普通字符 a 超文本 a ...

    超实用的jQuery代码段

    包含网页效果、DOM元素与属性、HTML事件、CSS样式、用户输入自动完成、拖放、图形图像、AJAX、算法、jQuery Mobile应用、浏览器、Cookies等jQuery技术内容,对提高网站开发人员和设计人员的jQuery技术水平有指导作用...

    gobananagrams

    请注意,这是我开发文字游戏的第一步,我们首先从预定义的参数开始,您可以在下一步部分中进一步了解如何将游戏提升到一个新的水平。 游戏说明和玩法:在3回合中,将为您提供10个随机图块,以尽可能多地生成单词。...

    ab-creative-agency

    Creative agency是全栈式Web应用程序,您可以在其中通过专业方式完成项目,以将品牌提升到一个新的水平。 创意代理商为您提供网页设计和开发,图形设计,博客撰写,精彩文章和24/7通话服务 特征 创意数字服务 ...

    skillshare-finder-project

    如果您想将一个爱好或技能提升到一个新的水平,只需输入您的地址,Skillit 就会向您显示 2 公里范围内当前正在工作并愿意合作的其他用户的实时地图。 根据用户的工作情况过滤这些用户,当您找到想见的人时,通过...

    angular-tree-component:一个简单但功能强大的Angular树组件(> = 2)

    在这一新的旅程中,我们还将获得技术指导,后者将帮助我们更好地了解社区,他们的需求,并将该组件提升到全新的工程水平。 入门 安装angular-tree-component : npm install @circlon/angular-tree-component ...

Global site tag (gtag.js) - Google Analytics