function SELECT_applyTextAlign(element) {
let styles = document.defaultView.getComputedStyle(element, "");
if ( styles.textAlign == 'left'
|| (styles.direction === 'ltr' && styles.textAlign === 'start')) {
// Left alignment doesn't require any kind of calculations.
element.style.textIndent = 0;
return;
}
if ( styles.textAlign == 'right'
|| (styles.direction === 'ltr' && styles.textAlign === 'end')) {
// Right alignment requires a proper width calculations.
let option = element.querySelector('option[value=\'' + element.value + '\']');
if (!option) {
return;
}
// Get original element width
let width = element.getBoundingClientRect().width;
// Create temporary <select> and <option> elements
let sz_select = document.createElement('select');
let sz_option = document.createElement('option');
// This should ensure both <select> have the same styles and <option> have the same text
sz_select.style.cssText = styles.cssText;
sz_select.style.width = 'auto';
sz_select.value = option.value;
sz_option.value = option.value;
sz_option.text = option.text;
// Append <option>
sz_select.appendChild(sz_option);
// Append <select>
element.parentNode.insertBefore(sz_select, element.nextSibling);
// Copy calculated width
let sz_width = sz_select.getBoundingClientRect().width;
element.style.textIndent = (width - sz_width) + 'px'
// Remove unnecessary element
sz_select.remove();
}
}
9条答案
按热度按时间pbossiut1#
是狩猎旅行中的一个错误。
错误40216 - text-align对select标签不起作用
https://bugs.webkit.org/show_bug.cgi?id=40216
2010年
kq4fsx7k2#
对于Safari
字符串
然而,分析HTML/CSS工作的最佳方法是Safari中的Web检查器。
x1c 0d1x更多>>
rbl8hiat3#
如果你没有找到任何解决方案,你可以在angularjs上使用这个技巧,或者使用js将选定的值与div上的文本Map,这个解决方案在angular上完全兼容css,但需要在select和div之间进行Map:
希望这对某人有用,因为我花了一天的时间才在phonegap上找到这个解决方案。
watbbzwu4#
我也遇到过类似的问题。我的问题是根据
text-align
样式对齐<select>
元素内的文本。这是正确处理基于media
的样式所必需的。在Chrome中,我使用的是
text-align-last
风格,但在Safari中,这种风格不受支持(根据MDN)。这就是为什么我提出了下面的JavaScript函数(使用
text-indent
),它可以执行left
和right
文本对齐(不是center
,因为它是OP问题,但在我的辩护中,我认为可以修改此代码以正确计算text-indent
的居中):字符串
然后,我附加了
load
和resize
事件处理程序,以确保在加载页面和更改窗口大小时处理所有<select>
元素:型
希望这能对某人有所帮助(在Chrome、iOS和Safari中测试)
dddzy1tm5#
对我来说,
text-align: -weblit-center
在移动的Safari上不起作用。我找到了这个解决方案text-indent: 5px hanging;
(根据您的情况更改5px)。这家酒店只在野生动物园工作。“pcww981p6#
Vanilla js的方法是使用普通输入来显示隐藏的选择框的选定文本,然后您可以将输入样式设置为您想要的选择框外观。
z2acfund7#
正如我在上面的评论中所说,我知道这实际上不是一个css解决方案,但如果对你来说很重要,如果你愿意使用jquery,这可以作为一个工作环境。它在chrome中不能正常工作,但如果您检查浏览器,您可以为safari加载它:
http://jsfiddle.net/nEGV4/4/
pexxcrt28#
text-align-last
在8月写这篇文章时工作正常。2023.在Mac和iPhone Safari上。字符串
xeufq47z9#
这对我很有效。
字符串