我在网页中间有一个文本,里面有一个div
标签,实际上它还没有在中间,但默认情况下我需要它在中间。那里有一个按钮,当您单击时,中间的文本会发生变化。问题是,当我更改文本时,它不再居中。我想要的是,无论文本内容如何,文本都应该始终处于中心位置。
$("#myButton").on('click', function() {
$('#throbber_status_info').html('TEXXXXXXXXXXXXXT');
});
#throbber_status_info {
position: absolute;
color: black;
top: 53%;
left: 50%;
margin: 0px auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="myButton">
click me
</button>
<div id="throbber_status_info" style="">Text</div>
使用 text-align: center
属性,它会自动为您执行此操作,请参阅更新的代码段:
$("#myButton").on('click', function() {
$('#throbber_status_info').html('TEXXXXXXXXXXXXXT');
});
#throbber_status_info {
position:absolute;
color:black;
top:53%;
width: 100%;
text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="myButton">
click me
</button>
<div id="throbber_status_info" style="">Text</div>
您可以使用display:flex;
https://jsfiddle.net/wnqd85qr/1/
使用弹性框,您可以轻松地将垂直居中 en 水平。但是你需要在你的CSS代码中有一个高度,否则它不起作用。
在这里,您可以了解有关弹性框的更多信息:http://flexboxfroggy.com/
如果要使用 jQuery 动态更改 left
属性,可以编写代码:
$("#myButton").on('click', function() {
$('#throbber_status_info').html('TEXXXXXXXXXXXXXT').css('left', function() {
var tw = $(this).width();
var w = $(this.parentNode).width();
return (50 - (tw / 2 / w * 100)) + '%';
});
});
当然,这不是您拥有的唯一选项,此方法没有响应,即应在调整大小事件时更新left
属性。
https://jsfiddle.net/Lommba8s/
使用 Jquery 可以创建一个函数来居中文本。
$("#myButton").on('click',function(){
$('#throbber_status_info').html('TEXXXXXXXXXXXXXT');
centerMe('#throbber_status_info');
});
function centerMe(JQ_Selector){
var medItemWidth = $(JQ_Selector).width()/2;
var medWindWidth = $(window).width()/2;
$(JQ_Selector).css('left', (medWindWidth - medItemWidth) + 'px');
}
在此处查看 JSFiddle。 https://jsfiddle.net/99s400nw
我宁愿不要绝对定位div
,但如果您需要这样做,请尝试以下操作:
#throbber_status_info {
color: black;
position: absolute;
left: 50%;
transform: translateX(-50%);
background-color: #dadada;
margin: 0px auto;
top: 53%;
text-align: center;
}
这里有一个小提琴来观察它的实际效果。