CSS 主体 `background-image` 在 Chrome、Safari (webkit) 上右对齐

标签 css background-image right-to-left document-body

在为从右到左的读者(阿拉伯语和希伯来语)调整网站时,我一直在努力解决 webkit 浏览器(chrome 和 safari)的问题。最后我将其报告为 WebKit bug ,但我仍然需要一个解决方法。

问题

为 body 标签分配一个背景图像,并将该背景图像定位在右侧并重复-y。现在,缩小窗口直到出现水平滚动条。背景图像将不再与文档右侧对齐,它将位于距左侧 x 像素的位置,其中 x 是视口(viewport)的宽度。

这是一个简化的示例,用于隔离问题。 “内容”一词应始终位于背景图像蓝色部分的顶部。

<html dir="rtl">
<head>
  <style type="text/css">
  body {
    margin: 0;
    background-image: url(data:image/png;base64, ...);
    background-position: top right;
    background-repeat: repeat-y;
  }
  #contents {
    width: 900px;
    height: 900px;
  }
  </style>
</head>
<body>
  <div id="contents">Contents</div>
</body>
</html>

您还可以看到 screendump包含在 WebKit 错误报告中。

有什么想法吗?

最佳答案

使用绝对定位元素怎么样?

<html dir="rtl">
<head>
<style type="text/css">
body {
    margin: 0;
}
#bg {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvgAAAACAgMAAABQ2kAmAAAAAXNSR0IArs4c6QAAAAlQTFRF5ev/9Pb/////KIKAcgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCQIMFSrrJQqoAAAAFUlEQVQY02PgWjU4wQoGokDUkHY+ACqhykF2Ey1yAAAAAElFTkSuQmCC);
    background-position: top right;
    background-repeat: repeat-y;
    position: absolute;
    right: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
}
#contents {
    width: 900px;
    height: 900px;
}
</style>
</head>
<body>
<div id="bg"></div>
<div id="contents">Contents</div>
</body>
</html>

似乎对我有用。

关于CSS 主体 `background-image` 在 Chrome、Safari (webkit) 上右对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12340743/

相关文章:

CSS 行高不影响 Cufon 字体

css - 如何在 VM 上运行的 IE8 中添加/编辑 CSS 属性?

css - 水平对齐多行中的元素

html - 如何将 css 图片库放置在背景图片之上

android - 在运行时启用/禁用 RTL 支持

css - 如何让图像适应大小以匹配其容器的高度

CSS 使用内联图像翻转创建文本

html - 文字图案叠加

ios - 如何在 iOS XCTest 单元测试中测试从右到左的语言?

html - "Right to left"不同方向跨度的顺序