CSS 属性 background-position 的 W3C 定义

Dec 18th, 2009 Add Comment

W3C, CSS, property, background, background-position

最近在编写 CSS 的过程中, 发现 W3C 组织对 background-position 的验证有所调整, 虽然只是个小变动, 但可能影响很多人的编码习惯, 所以我决定提出来讲讲.

我们先来看看 W3C 对 background-position 的定义, 值的编写规则如下:

[ [ <percentage> | <length> | left | center | right ] [ <percentage> | <length> | top | center | bottom ]? ] | [ [ left | center | right ] || [ top | center | bottom ] ] | inherit

从编写规则我们可以看出, background-position 的值可以是代号, 数值, 百分比; 可以是一个单值, 双值; 还可以是 inherit.

background 属性中可以包含 background-position 属性, 其编写规则一致. W3C 列出的例子如下:

body { background: url("banner.jpeg") right top }	/* 100%   0% */
body { background: url("banner.jpeg") top center }	/*  50%   0% */
body { background: url("banner.jpeg") center }		/*  50%  50% */
body { background: url("banner.jpeg") bottom }		/*  50% 100% */

前两行列出了横向和纵向两个位置, 第一个是横向的, 第二个是纵向的. 后两行只有一个值, 另一个值缺省, 缺省值将被浏览器默认为 center.

我也是一直这样写的, 也就是当需要双值的时候写两个值, 不需要的时候单值. 但是今天发现这样书写的 CSS 代码会被 W3C 的 CSS Validator 认为是错误的, :shock: 将 Profile 设置为 CSS 2, CSS 2.1, CSS 3 进行校验都会出错, :cry: 出错信息如下:

Value Error : background Parse Error [empty string]

也就是说, 今后在 background 标签上不能再使用单值为图片定位, 否则不能通过 W3C 认证.

还没结束, 因为我对此好奇, 所以也在 background-position 属性上使用单值去校验了几次, 发现并不会报错. 也不知道 W3 组织是基于什么考虑, 让两个属性的编写规则进行差异处理, 否定了自己的文档而且还不能统一. :o

好吧, 我就改一下吧. 于是我在迷惑和无奈中把值补全了, 并不断地安慰自己说, 把东西写全是有好处的, 起码浏览器解析速度将有所提高 (尽管微乎其微). :mrgreen:

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: CSS 属性 background-position 的 W3C 定义

  1. http://0.gravatar.com/avatar/8cced8ca2f6ba42161e0817ef8fbd8f2?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    你太追求完美了,哈哈。

  2. http://1.gravatar.com/avatar/f7cb4108eea83c009460c328199c3ac3?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    貌似我不偷懒还有好处。

  3. http://0.gravatar.com/avatar/4f4e2e8611a5f3de7a7bd5e7aaa21dbb?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    貌似越来越冷清了。

  4. http://1.gravatar.com/avatar/b46b2e73a0a30aec733fbbb1024673b3?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    占楼,送祝福~

  5. http://0.gravatar.com/avatar/23f735497eb40acdc2c99ca4f3de63b3?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  6. http://1.gravatar.com/avatar/fc14132aa59f391e31a384177bea605b?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  7. http://1.gravatar.com/avatar/36b18348c69ca1d6820299b959f551fe?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我想请问一下如何用CDATA封装Recent Comments的内容????
    ....
    //
    ....

    Recent Comments...变成你的源码这样啊.

  8. http://1.gravatar.com/avatar/fc14132aa59f391e31a384177bea605b?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @dollie
    貌似是在alpha階段的Paled的~~私人的? :cry:

  9. http://0.gravatar.com/avatar/c25b24d10086e2e58cf679b3e4ff6136?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    If men want to learn about this post they should buy essays choosing the paper writing services.

  10. http://0.gravatar.com/avatar/c0f815ec3411fdfbf57066400f758260?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  11. http://1.gravatar.com/avatar/19b1e511a970d22aaf6d7dadf96fcfa6?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    :mrgreen: 一直都是写2个的路过..
    其追根到底的精神跟我一样..

    PS:呃.. 阁下的图貌似挂了.....

  12. http://1.gravatar.com/avatar/5ffa33012aa20149a67c5b91d6076cfa?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我的博客独立了。新的地址是http://www.xvsj.c.la/ 从RSS订阅器里一个个通知。头疼。

  13. http://1.gravatar.com/avatar/72c20fe340db2d85bc969e0d7cb786bb?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我都不清楚我现在在用的这个主题有没有达到W3C标准 :roll:

  14. http://1.gravatar.com/avatar/7ef73f554c263c429b8fa2ee8de5fe48?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我碰到这样的错误都无所适从,,,唉

  15. http://1.gravatar.com/avatar/935178ee617f88f065fb2ecf1ee7f134?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    對於background的定位,我一直都是全寫的。
    幸好有這個習慣,不用特意再做修正了:)

  16. http://0.gravatar.com/avatar/05a4bad12071fc0f89f4593d63d1f5ad?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    thanks for sharing, anyway I did some modify into ur neoease themes I hope thats just fine and hope you give me some suggestion, thanks alot MG12

  17. http://0.gravatar.com/avatar/654fc831caef29c1c0ee9d1558c70bba?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    技术问题一点不懂,看着眼花。。。。。纯粹打酱油地。。

    祝福博主圣诞快乐!!

  18. http://0.gravatar.com/avatar/2a267327144efa9faf5047dce1bec359?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    平安夜快乐~~~~

  19. http://0.gravatar.com/avatar/ee96af3312681bc85af88ec9ebb2d835?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    還真的不能不多注意啊!

  20. http://1.gravatar.com/avatar/fc14132aa59f391e31a384177bea605b?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我抄袭了你现在这个主题的样式~~把它弄到inove里~~
    介意不~~ :?: ~~~ :oops:

  21. http://0.gravatar.com/avatar/490cf262668eebb0f0f1a50d9d48d702?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @bolo
    那说明 W3 组织被微软收买了, 或者已经沦陷了.

    @zhouqi
    因为我懒, 不想处理嵌套的效果, 所以做成这样了.

    @玛格丽特苏
    百分比的意思是图片的 N% 的位置放置在容器 N% 的位置上. 0% 相当于 top 和 left, 50% 相当于 center, 100% 相当于 bottom 和 right, 他的好处是可以和数值混用, 但关键字不可以.

    @江流
    欢迎加入折腾队伍.

  22. http://0.gravatar.com/avatar/0184be6025088ca575f080f23ad6b544?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    歌颂为人民服务的伟大同志,哈哈。慢慢补=。=

  23. http://0.gravatar.com/avatar/2a9c4f525050372a6fe0b10ce4fe8957?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @玛格丽特苏
    现在要求写双值,第一个值是X轴上的位置,也就是横坐标,另一个是竖坐标

  24. http://1.gravatar.com/avatar/34ceb83637a8d1da79d4e26c67054672?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @bolo
    好吧,所在容器。然后比如50%是指距离所在容器左边或上边,长度是所在容器宽度或者高度的50%的位置吗? :shock:

  25. http://0.gravatar.com/avatar/2a9c4f525050372a6fe0b10ce4fe8957?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @玛格丽特苏
    所在容器宽和高的百分比

  26. http://1.gravatar.com/avatar/34ceb83637a8d1da79d4e26c67054672?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    大大,那个百分比是怎么说的,是距离屏幕左边的百分比和距离屏幕上面的百分比么?分号下面是显示器宽和高?

  27. http://0.gravatar.com/avatar/0735222349d1ca1799ff6584861c74a1?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    一个值缺省, 缺省值将被浏览器默认为 center
    原来还能这样
    提个小意见:评论里的主人回复那:hover的时候,出来的原评论内容鼠标不能移上去,我本来想点里面的一个链接的,虽然可以通过锚链回到原评论

  28. http://1.gravatar.com/avatar/94edba5ccaf4f54d0891cf3a7b1e1280?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    少折腾有好处
    不过我们写代码还是要严谨点的。

  29. http://1.gravatar.com/avatar/71981550e606563e4f569c420b2276cf?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    几乎没用过单值去设置过,而且比较喜欢用数值

  30. http://0.gravatar.com/avatar/2a9c4f525050372a6fe0b10ce4fe8957?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    另外现在CSS Validator 好像允许直接把IE HACK写进CSS里了,这样的话以后不用另外写个ie.css文件了

  31. http://0.gravatar.com/avatar/490cf262668eebb0f0f1a50d9d48d702?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @Mars
    如果在新版本的规则中如此定义很合理, 但不晓得为什么他把老版本 (包括经典版本) 都修改了.

    @bolo
    嗯, 是的, 我就是最近发现的.

    @QiQiBoY , @fatkun
    很好... 呵呵~

  32. http://1.gravatar.com/avatar/58be12971823af5c6520597bd6d3a552?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    貌似我一直写全。。。因为我不知道单个具体是什么意思。。- :arrow:

  33. http://1.gravatar.com/avatar/fa7f6e086d0164f7a5c41a79df6bd3ee?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    老是做不到沙发。 :!:

  34. http://1.gravatar.com/avatar/d4efbdaa43e9202a96df023ae758a9bf?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    原来图片定位还可以写单值。。。。我一直以为要写全。。。。看来不偷懒还是正确的。。

  35. http://0.gravatar.com/avatar/2a9c4f525050372a6fe0b10ce4fe8957?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    前几天就发现了,原来无错误和警告的CSS现在满是warn了

  36. http://0.gravatar.com/avatar/681feebace842f9e7f99b817cea2ed01?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    哎,不管W3C基于什么样的考虑,我只希望“少折腾”

  37. http://0.gravatar.com/avatar/ee7f497cbe066617ac3939ce0f37d7a2?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    学习了,虽然现在没啥概念;

  38. http://0.gravatar.com/avatar/490cf262668eebb0f0f1a50d9d48d702?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @忘记月亮
    我很多文章都是写了一半 (一般只开个头) 没时间写完, 这个星期我只是结束了其中几个.

  39. http://0.gravatar.com/avatar/c4e6643ae2a4a07665ae1723450e5e60?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    学习啦 没怎么注意一直
    这几天很勤快啊,更新很频繁。