javascript - 如何获取H1标签内文本的宽度?

标签 javascript jquery html css

是的,这很可能是重复的,但请在标记之前先阅读我的问题。

经过两个小时的搜索,我对此感到非常沮丧。 我尝试了以下方法:

• 使用了 jQuery 的 $("#this").width() 方法。它返回一个接近我的屏幕宽度的值。

• 使用了 JavaScript 的 this.offsetWidth 方法。同样的事情发生。

• 将display: inline 设置为h1 的样式并尝试了前两种方法。没用。返回相同的值。

• 设置显示:内联 block 并尝试过。运气不好。

• 将填充和边距设置为 0。再次出现不需要的结果。

• 尝试使用 innerWidth 获取值。还是一样。

• 将 h1 与 p 切换并请求该值。不用找了。 (也应用了样式)

目前,我正在考虑用相同样式的禁用按钮替换所有标题,但是,这会非常不方便,并且会对页面上的动画产生一些干扰。

我想要实现的是标题的居中对齐。我知道我可以设置 position: relative,但是在垂直定位标题时会遇到麻烦。

一些 HTML:

    <h1 class="preload" id="interactor"> Hi!</h1>
    <h1 id="screenWidth"></h1>

在 CSS 中:

h1.preload  {
    position: absolute;
    top: -20%; /* later gets animated */
    display: inline;
}

JavaScript:

    //just testing
    var sW = window.innerWidth;
    document.getElementById("screenWidth").innerHTML = sW;
    document.getElementById("interactor").innerHTML = $("#interactor").width();

编辑: 我再次尝试了内联方法。不工作。 但是,我发现了这一点: 当我使用 jQuery 的 css 方法设置 display: inline 时,值被正确返回(在我的例子中是 45),但是在 CSS 文件中这样做是行不通的。不过,该元素确实被选中,因为字体和颜色的修改是可见的。

最佳答案

这里:如果你有 display: inline-block,它工作正常

$(function(){
  $h1 = $("h1");
  $("#result").text("width:"+$h1.width()+"px - inner width"+$h1.innerWidth()+"px");
});
h1{
  display:inline-block;
  padding: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Foo Bar</h1>
<p id="result"></p>

关于javascript - 如何获取H1标签内文本的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782046/

相关文章:

javascript - 包含 div @ 100% 缩放的数据表溢出

jquery - 单击顶部图像,显示模态和另一幅图​​像(在模态后面)

javascript - 获取div输入的childs值

javascript - 无法读取 null 的属性 'id' - JS 错误

javascript - 谷歌地图自动完成在模式弹出窗口中不起作用

javascript - 如果传递的项目存在于内部的所有数组中,则返回 true - 无法返回 false?

javascript - 将多维对象数组转换为单维对象数组 Javascript

javascript - 如何用JS代码加载php文件

javascript - Angular 渐进式 Web 应用程序在本地主机上工作但不在 IP 上

css - 在数据描述中创建换行符