从左到右和从右到左的语言中,弹出框宽度问题

5

经过大量阅读和搜索SO线程,我几乎已经按照自己的意愿处理好了与不同语言相关的弹出窗口 - 除了以下问题:

在ltr语言(英语、法语、德语等)和rtl语言(阿拉伯语、希伯来语等)之间,我的bootstrap 3 popovers的宽度有所差异。

在ltr语言中,弹出窗口的宽度只有必要时才会显示出来,最大宽度为600px,如下所示:

enter image description here

而在rtl语言中,弹出窗口的宽度是最大宽度600px,而不是只有必要时才会显示出来,如下所示:

enter image description here

我不确定这是为什么。我已经阅读了许多SO文章并广泛搜索了谷歌,但我无法解决这个问题。

有人能指出我的ltr和rtl语言弹出窗口宽度之间的差异吗?我希望将rtl弹出窗口的宽度只调整到必要程度。这可能是一个简单的修复,但我看不到问题在哪里。

上面两张屏幕截图显示了相同的信息(来自数据库),只是根据rtl/ltr语言使用不同的CSS文件。

以下是我的ltr css代码:

.popover {
    direction: ltr;
    position: fixed;
    word-break: normal;
    word-wrap: break-word;
    z-index: 9999;
    background-color: lavender;
}

.popover.right {
    background-color: blueviolet;
    margin-left: 17px;
    max-width: 600px;
}

.popover.left {
    background-color: gold;
    margin-right: 0px;
    min-width: 375px;
}

这里是rtl css代码:

.popover {
    direction: rtl;
    position: fixed;
    word-break: normal;
    word-wrap: break-word;
    z-index: 9999;
    background-color: khaki;
}

.popover.right {
    background-color: indianred;
    margin-left: 17px;
    min-width: 375px;
}

.popover.left {
    background-color: lightsteelblue;
    margin-left: -17px;
    max-width: 600px;
}

你能用演示复制这个问题吗?http://stackoverflow.com/help/mcve - m4n0
Manoj Kumar - 复制问题证明很困难,因为页面/网站的语言方向不同 - jsfiddle 不允许这样做。 - user1261774
1个回答

3

在检查了bootstrap-rtl.min.css中.popover css类并更改不同的值后,我已经成功地确定了此问题的原因。

在bootstrap-rtl.min.css的.popover css类中有一个值:

.popover {
    ....
    right: 0;
    ....
}

这是关于right css属性的描述。
如果我将上面的值更改为下面的值,问题就解决了:
.popover {
    ....
    right: 1;
    ....
}

针对rtl语言,弹出框只显示所需宽度(最大宽度为600px)的问题已得到解决。

希望这能帮到某些人。


1
right: 1 不是有效的 CSS 值,必须使用 right: auto !important;。为了更好地显示箭头,可以使用以下代码:.popover > .arrow, .popover > .arrow::after {left: 0;} - Nabi K.A.Z.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接