css - 如何从右到左渲染进度元素?

标签 css html progress-bar

我有一个从左到右显示的进度条。我需要制作另一个相同风格的进度,但将从右到左显示。

这是我的样式定义:

progress, progress[role] {
    -webkit-appearance: none;
    appearance: none;
    border: none;
    background-size: auto;
    height: 50px;
    width: 100%;
    padding-top: 10px;
}
 progress[value]::-webkit-progress-bar {
     background-color: grey;
     border-radius: 2px;
     box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
 }
 progress[value]::-webkit-progress-value {
    background-image:
        -webkit-linear-gradient(-45deg, 
                               transparent 33%, rgba(0, 0, 0, .1) 33%, 
                               rgba(0,0, 0, .1) 66%, transparent 66%),
        -webkit-linear-gradient(top, 
                               rgba(255, 255, 255, .25), 
                               rgba(0, 0, 0, .25)),
        -webkit-linear-gradient(left, #09c, #f44);
    border-radius: 2px; 
    background-size: 35px 20px, 100% 100%, 100% 100%; 
}

.valuebar {
    position: relative;
}
.valuebar h3 {
    color: #fff;
    left: 1em;
    line-height: 1;
    position: absolute;
}

我使用了来自网络的示例,该示例使用 ::-webkit-progress-value

如何让它从右向左渲染?

最佳答案

通常,许多元素在 direction 时翻转其水平渲染。属性从 ltr 更改(这是默认值)到 rtl ,代表从右到左(与从右到左的语言兼容,例如阿拉伯语或希伯来语)。

<progress>元素没有不同。只需给 CSS 一些东西来坚持(比如一个特殊的类)并设置它的 direction: rtl; .

这是基于您发布的代码的一个小片段。

/* this is the important bit */
progress.rtl {
  direction: rtl;
}
progress,
progress[role] {
  -webkit-appearance: none;
  appearance: none;
  border: none;
  background-size: auto;
  height: 50px;
  width: 100%;
  padding-top: 10px;
}
progress[value]::-webkit-progress-bar {
  background-color: grey;
  border-radius: 2px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
}
progress[value]::-webkit-progress-value {
  background-image: -webkit-linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, .1) 33%, rgba(0, 0, 0, .1) 66%, transparent 66%), -webkit-linear-gradient(top, rgba(255, 255, 255, .25), rgba(0, 0, 0, .25)), -webkit-linear-gradient(left, #09c, #f44);
  border-radius: 2px;
  background-size: 35px 20px, 100% 100%, 100% 100%;
}
.valuebar {
  position: relative;
}
.valuebar h3 {
  color: #fff;
  left: 1em;
  line-height: 1;
  position: absolute;
}
<progress value="59" max="100">59%</progress>
<br />
<progress class="rtl" value="59" max="100">59%</progress>

我不知道你的标记是什么,因为你没有发布它,但你可能需要调整 .valuebar定位。

这是一个code pen你可以玩弄。

关于css - 如何从右到左渲染进度元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439032/

相关文章:

css - 我可以在移动网站上省略非供应商前缀的 CSS 属性吗?

css - .ui-state-hover a 中的 ovrreride anchor 样式来自 jqueryui css

javascript - 我将如何通过使用 eventListener 来更改使用 slider 的 img 的不透明度?

javascript - 有没有办法根据当前窗口大小动态调整 html/cshtml 页面中组件的大小?

java - 仅识别与新闻稿页面相关的链接

android - 在 TextView 中显示进度条下方的进度

html - 设置 Bootstrap Card 中内容的高度,使其填满整个卡片 block

javascript - 使用 HTML 按钮将文本复制到剪贴板

jquery - Progressbar.js - SVG 进度条在 IE 11,10,9 上不起作用

c# - 如何在长时间的服务器进程中显示信息丰富的实时进度数据