CSS 属性 background-position 的 W3C 定义

W3C, CSS, property, background, background-position

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

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

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

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

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

1
2
3
4
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. 忘记月亮 | #1
    2009-12-18 20:29

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

  2. mg12 | #2
    2009-12-18 23:26

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

  3. trylife | #3
    2009-12-19 01:14

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

  4. Mars | #4
    2009-12-19 01:47

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

  5. bolo | #5
    2009-12-19 01:48

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

  6. QiQiBoY | #6
    2009-12-19 11:42

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

  7. crossyou | #7
    2009-12-19 11:49

    老是做不到沙发。 :!:

  8. fatkun | #8
    2009-12-19 13:37

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

  9. mg12 | #9
    2009-12-19 14:46

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

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

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

  10. bolo | #10
    2009-12-19 15:13

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

  11. chisdy | #11
    2009-12-20 04:17

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

  12. 园子 | #12
    2009-12-21 09:15

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

  13. zhouqi | #13
    2009-12-21 13:47

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

  14. 玛格丽特苏 | #14
    2009-12-21 22:29

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

  15. bolo | #15
    2009-12-21 23:45

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

  16. 玛格丽特苏 | #16
    2009-12-22 00:04

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

  17. bolo | #17
    2009-12-22 00:21

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

  18. 江流 | #18
    2009-12-22 12:57

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

  19. mg12 | #19
    2009-12-23 12:37

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

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

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

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

  20. keon | #20
    2009-12-23 16:27

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

  21. 拆組達人 | #21
    2009-12-24 10:21

    還真的不能不多注意啊!

  22. 小猪vs蛋挞 | #22
    2009-12-24 22:46

    平安夜快乐~~~~

  23. 喵喵呜 | #23
    2009-12-25 22:34

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

    祝福博主圣诞快乐!!

  24. Belajar SEO WordPress | #24
    2009-12-27 11:44

    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

  25. muki | #25
    2009-12-27 21:31

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

  26. countmeon | #26
    2009-12-28 13:53

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

  27. ein | #27
    2009-12-28 20:15

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

  28. 本博独立宣言--少杰 | #28
    2009-12-29 17:36

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

  29. GhoSoul | #29
    2009-12-30 17:21

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

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

  30. dollie | #30
    2009-12-30 18:13
  31. EllenrC | #31
    2009-12-30 22:04

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

  32. keon | #32
    2009-12-30 23:26

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

  33. edikud | #33
    2009-12-31 19:35

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

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

  34. keon | #34
    2010-01-01 08:54

    @dollie
    我錯了~~

  35. 仁心博客 | #35
    2010-01-01 10:04

    祝元旦快乐

  36. Sawyer | #36
    2010-01-01 17:48

    占楼,送祝福~

  37. Nox | #37
    2010-01-03 17:51

    貌似越来越冷清了。

  38. 小小书童 | #38
    2010-02-23 05:43

    貌似我不偷懒还有好处。

  1. No trackbacks yet.

Twitter Email feed
RSS feed