深入浅出CSS3 background-clip,background-origin和border-image教程

核心提示:最近在准备一个下学期参加比赛的概念网站,希望能用到CSS3的新特性,比如background的background-clip或background-origin或border-image。但仅仅是依靠w3schools上的文档和说明发现很多臆想中的效果都实现不了。

很久以前 Roger Johansson 就在他的 blog 上做了一个 用样式控制表单元素 的测试 , 告诉我们企图用样式控制表单元素是一件不可能的事情using CSS to style form controls to look exactly the same across browsers and platforms is impossible
甚至 css2.1 规范中也没有明确这方面的规定 , 而是打算将它 fix in future
CSS 2 . 1 does not define which properties apply to form controls and frames, or how CSS can be used to style them. User agents may apply CSS properties to these elements. Authors are recommended to treat such support as experimental. A future level of CSS may specify this further.

所以如果想要让表单元素在各个浏览器下完全一致 , 最好的解决方法莫过于完全不理会操作系统的样式 , 用自定义的 ui 风格 , 就像 bing 或 Google 的 Jazz UI 那样

 

然而 , 这会导致界面和用户的系统格格不入 , 目前 google 主要还是针对浏览器做了些特殊处理 , 如 webkit 下用 gradient 使得按钮看上去好些
 

mac 下 webkit 的按钮不好控制

 

本文将就输入框高度的问题进行调研 , 寻找更好的解决方法
输入框高度
首先 , 这个调研的一个主要原因是 , 搜索结果页打算进入标准模式 , 这会导致盒模型的变化 , 造成输入框高度和原来不一样 , 所以为了和线上效果保持一致 , 我们需要找到一个最佳的解决方案
有同学可能会不解 , 有那么难么 ? 设置一个 height 不就解决了么 ?
<input type= "text" style= "height:28px" />
然而 , 经测试发现这里面的细节问题还是还挺多 , 由于资源有限 , 这里只测试了主要的浏览器和平台 , 包括目前主要用到的 5 个浏览器
·         IE6(xp)
·         IE7(xp)
·         IE8(win7)
·         Firefox 3.5(xp)
·         Firefox 3.5(win7)
·         Firefox 3.5(mac 10.6.2)
·         Firefox 3.5(ubuntu 10.4)
·         Chrome 5(xp)
·         Chrome 5(win7)
·         Chrome 5(mac 10.6.2)
·         Chrome 5(ubuntu 10.4)
通过设定 height 的方式
我们的目标是和目前搜索框大小保持一致 , 既 28px
首先测试的是最简单的 height, 先看目前线上的方案 ( 简单起见就直接写到 style 中了 )
<input type= "text" style= "font: 16px arial; height: 1.78em; padding-top:2px" />
从样式上推导 , 由于盒模型问题 , 在 IE 下的大小将是 1.78 * 16 = 28px, 而 Firefox 等浏览器应该是 1.78 * 16 + 2px + border-width * 2 = 30 + ? px
测试结果是
浏览器  height + padding-top + padding-bottom + border-top-width + border-bottom-width 
IE6(xp)  21 + 2 + 1 + 2 + 2 = 28 
IE7(xp)  21 + 2 + 1 + 2 + 2 = 28 
IE8(win7)  21 + 2 + 1 + 2 + 2 = 28 
Firefox 3.5(xp)  21 + 2 + 1 + 2 + 2 = 28 
Firefox 3.5(win7)  23 + 2 + 1 + 1 + 1 = 28 
Firefox 3.5(mac 10.6.2)  19 + 2 + 1 + 3 + 3 = 28 
Firefox 3.5(ubuntu 10.04)  19 + 2 + 1 + 3 + 3 = 28 
Chrome 5(xp)  21 + 2 + 1 + 2 + 2 = 28 
Chrome 5(win7)  21 + 2 + 1 + 2 + 2 = 28 
Chrome 5(mac 10.6.2)  21 + 2 + 1 + 2 + 2 = 28 
Chrome 5(ubuntu 10.04)  21 + 2 + 1 + 2 + 2 = 28 

效果相当理想 , 所有浏览器都是 28px, 看来即使是 Firefox 和 Chrom 在 quirks 模式下的 input 都没有遵循盒模型 , 所以线上的输入框高度在各个浏览器下很完美地保持一致
然而如果是在 standards 模式下 , 结果则是
浏览器  height + padding-top + padding-bottom + border-top-width + border-bottom-width 
IE6(xp)  28 + 2 + 1 + 2 + 2 = 35 
IE7(xp)  28 + 2 + 1 + 2 + 2 = 35 
IE8(win7)  28 + 2 + 1 + 2 + 2 = 35 
Firefox 3.5(xp)  28 + 2 + 1 + 2 + 2 = 35 
Firefox 3.5(win7)  28 + 2 + 1 + 1 + 1 = 32 
Firefox 3.5(mac 10.6.2)  28 + 2 + 1 + 3 + 3 = 37 
Firefox 3.5(ubuntu 10.04)  28 + 2 + 1 + 3 + 3 = 37 
Chrome 5(xp)  28 + 2 + 1 + 2 + 2 = 35 
Chrome 5(win7)  28 + 2 + 1 + 2 + 2 = 35 
Chrome 5(mac 10.6.2)  28 + 2 + 1 + 2 + 2 = 35 
Chrome 5(ubuntu 10.04)  28 + 2 + 1 + 2 + 2 = 35 

1 2 下一页 >全文阅读
提示:试试"← →"键,翻页更方便哦!

[1] [2]  下一页

时间: 2024-10-30 22:38:31

深入浅出CSS3 background-clip,background-origin和border-image教程的相关文章

15个CSS3和jQuery的超棒页面过渡效果教程

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 CSS3和jQuery从根本上改变了网页设计和程序开发.通过CSS3和jQuery,设计员和开发者不需要太多的精力或编码,就可以创造出非常 美丽令人叹惊的效果,同时还可以令你快速完成任务.CSS3和jQuery最 大的方便之处在于网上有大量的不同元素效果的展示教程,这一点使得学习新技巧 和创造一些很棒的内容更加轻松.网上有很多页面过渡效果展示

CSS3的clip

一句话介绍 裁剪图像. 基本语法 .mkq { clip: <shape>|auto|inherit; } :函数功能,目前只有rect()可用 auto:和没剪裁过一样 inherit:继承父元素 举例: .mkq{ clip: rect(0,0,20px,0); } 使用注意 只能在设置了position: absolute;\float: left;的属性上起作用 如果使用了auto,就包含border和padding 兼容性 还不错,但是在IE4-IE7需要把rect()里面的逗号去掉

CSS Border 实例教程

边境的CSS ,我们的个人喜爱的CSS属性,让您可以完全自定义的边界附近出现的HTML元素.与HTML ,它曾经是不可能发生的边界附近的一个要素,除了就座.的CSS边框让你创造清晰,定制的边框样式很少的工作,而陈旧的方法的HTML . border风格类型 有许多类型的边框样式在您的处置.我们建议您尝试了许多彩色/边界式的组合来获得一个想法所有不同的期待您可以创建.注:我们使用的CSS类以下,因此,请检查的CSS类的教训,如果你不理解. p.solid {border-style: solid;

css3对background属性调整与增强

css3对于backgrounds做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强. 1.多个背景图片 在css3里面,你可以再一个标签元素里应用多个背景图片.代码类似与css2.0版本的写法,但引用图片之间需用","逗号隔开.第一个图片是定位在元素最上面的背景,后面的背景图片依次在它下面显示,如下: background-image: url(top-image.jpg), url(middle-image.jpg), url(bo

css3教程:background属性调整增强

网页制作Webjx文章简介:css3.0对background的调整与增强. (注:仅对css3对background的调整.增加的属性进行了翻译)css3对于backgrounds做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强. 1.多个背景图片在css3里面,你可以再一个标签元素里应用多个背景图片.代码类似与css2.0版本的写法,但引用图片之间需用","逗号隔开.第一个图片是定位在元素最上面的背景,后面的背景图片依次在它下面显

CSS3对background的调整和增加的属性

CSS3对于backgrounds做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强. 1.多个背景图片 在css3里面,你可以再一个标签元素里应用多个背景图片.代码类似与css2.0版本的写法,但引用图片之间需用","逗号隔开.第一个图片是定位在元素最上面的背景,后面的背景图片依次在它下面显示,如下: background-image: url(top-image.jpg), url(middle-image.jpg), url(bo

CSS3实例教程:使用border

文章简介:熟练使用border-radius. 这个实例的目的:熟练使用border-radius 涉及的属性:border-radius .linear-gradient . box-shadow 提示:":before" ":after",IE对after.before是不支持的,请在firefox.opera.chrome下试调! 要求浏览器:firefox.opera.chrome 效果图: 先看下大致的步骤: 1.定义class,绘制一个矩形: 2.用bo

background和background-Color的区别介绍

怎么设置background-color: #aaa; 输入框的背景都没有变而设置background: #aaa;背景就改变了,多么奇怪的一个问题,接下来为大家分析下原因,遇到类似问题的朋友可以了解下   在设置输入框变成一条线的样式时遇到一个小问题. 无论怎么设置background-color: #aaa; 输入框的背景都没有变 而设置background: #aaa;背景就改变了. 后来发现原因 background 可以设置 背景颜色.背景图片.定位等 background-color

UWP -- Background Task 深入解析

原文:UWP -- Background Task 深入解析 1. 重点 锁屏问题 从 Windows 10 开始,用户无须再将你的应用添加到锁屏界面,即可利用后台任务,通用 Windows 应用必须在注册任何后台触发器类型之前调用 RequestAccessAsync: await BackgroundExecutionManager.RequestAccessAsync(); 资源限制 由于对于内存较低的设备的资源约束,后台任务可能具有内存限制,该限制决定了后台任务可以使用的内存上限 在内存