无法获取隐藏元素宽度和高度的解决方案

要获取一个元素的宽度和高度并不难,但如果该元素具有CSS属性 display: none 或者使用 opacity: 0 隐藏的话,我们就无法通过直接获取元素的宽度和高度来获取其准确值。那么如何解决这个问题呢?

解决方案

方案一:使用visibility属性

这个方案相对比较简单,只需要使用 visibility 属性替换 display 属性,并将其设置为 hidden 即可。

.hidden-element {
  visibility: hidden;
}
var element = document.querySelector('.hidden-element');
var width = element.offsetWidth;
var height = element.offsetHeight;

这样就可以正常获取到该元素的宽度和高度了。

方案二:使用clone元素

这个方案需要将元素克隆一份出来,然后将克隆出来的元素插入到文档中,再通过获取克隆元素的宽度和高度来获取原始元素的宽度和高度。

<div class="clone-me">
  <p>Hello World!</p>
</div>
var element = document.querySelector('.clone-me');
var clone = element.cloneNode(true);
clone.style.position = 'fixed';
clone.style.top = '-9999px';
clone.style.left = '-9999px';
document.body.appendChild(clone);

var width = clone.offsetWidth;
var height = clone.offsetHeight;

document.body.removeChild(clone);

以上代码中,我们将 clone-me 元素克隆出来,并将其样式设置为不可见,然后将其插入到文档的一个不可见位置。这样我们就可以通过 clone 元素获取到 element 元素的宽度和高度了。

示例说明

示例一:使用visibility属性

假设我们有一个元素,其样式如下:

.hide-me {
  display: none;
}

我们无法通过获取该元素的宽度和高度:

var element = document.querySelector('.hide-me');
var width = element.offsetWidth;    // 返回0
var height = element.offsetHeight;  // 返回0

此时我们可以将 display 属性替换为 visibility 属性,将其设置为 hidden

.hide-me {
  visibility: hidden;
}

然后就可以正常获取到该元素的宽度和高度了:

var element = document.querySelector('.hide-me');
var width = element.offsetWidth;    // 正确获取元素宽度
var height = element.offsetHeight;  // 正确获取元素高度

示例二:使用clone元素

假设我们有一个元素,其样式如下:

.hide-me {
  opacity: 0;
}

我们无法通过获取该元素的宽度和高度:

var element = document.querySelector('.hide-me');
var width = element.offsetWidth;    // 返回0
var height = element.offsetHeight;  // 返回0

此时我们可以将该元素克隆一份,并将克隆出来的元素插入到文档中:

var element = document.querySelector('.hide-me');
var clone = element.cloneNode(true);
clone.style.position = 'fixed';
clone.style.top = '-9999px';
clone.style.left = '-9999px';
document.body.appendChild(clone);

var width = clone.offsetWidth;
var height = clone.offsetHeight;

document.body.removeChild(clone);

这样我们就可以通过 clone 元素获取到 element 元素的宽度和高度了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:无法获取隐藏元素宽度和高度的解决方案 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS实现一个自适应的正方形的方法示例

    实现一个自适应的正方形可以使用CSS来实现,有以下几种方法: 1. 使用 padding 可以通过给容器设置一个相等的高度和宽度以及一个匹配的 padding来实现一个自适应的正方形。具体实现方式如下: .square { position: relative; width: 50%; /* 宽度设置为50% */ padding-top: 50%; /* …

    css 2023年6月10日
    00
  • React使用emotion写css代码

    当我们使用React来构建Web应用程序时,通常使用CSS来美化和布局页面。而使用emotion可以帮助我们更轻松地编写和管理CSS,并将样式与组件紧密耦合。下面我将为你提供完整的React使用emotion写CSS代码的攻略。 安装emotion 首先,我们需要使用npm或yarn安装emotion: npm install –save @emotion…

    css 2023年6月9日
    00
  • JavaScript仿小米商城官网完整页面实现流程

    JavaScript仿小米商城官网完整页面实现流程可以分为以下几个步骤: 1.准备工作 在开始仿制小米官网前,需要先了解前端技术的基本知识,如HTML、CSS、JavaScript等,并学会使用开发调试工具。同时还需要掌握jQuery等框架的基础知识以及相关插件的使用方法,以方便开发和实现各种特效。 2.设计页面结构 仿造小米官网,需要先设计页面的结构和布局…

    css 2023年6月11日
    00
  • 使用CSS3实现多列布局与多背景的技巧

    下面是使用CSS3实现多列布局与多背景的技巧的完整攻略。 多列布局的实现 CSS3提供了多列布局的实现方法,可以通过column-count等属性实现,具体步骤如下: 在CSS中定义好多列布局所在的元素选择器,如.columns。 设置column-count属性,该属性表示布局中应该有多少列。例如:column-count: 3;表示设置为3列布局。 设置…

    css 2023年6月10日
    00
  • clear 万能清除浮动(clearfix:after)

    “清除浮动”是Web开发中常用的技巧,旨在解决由浮动元素造成的布局问题。其中一种常见的清除浮动方法是使用“clearfix:after”的伪元素。 什么是浮动? 在开始讲解清除浮动之前,首先要了解浮动元素是什么。浮动是CSS中一个常用的布局概念,一般是指元素脱离文档流,并向左或向右浮动。 什么是清除浮动? 当一个元素被浮动后,其原先占据的空间就会释放出来,如…

    css 2023年6月10日
    00
  • 全面了解CSS

    CSS是Web开发中的重要组成部分,它决定了网页的外观和用户体验。以下是一个全面了解CSS的完整攻略,包括两个示例说明: 1. CSS基础 选择器 选择器是CSS中用于选择元素的一种方式。以下是一些常见的选择器: 标签选择器:选择所有具有指定标签的元素。 类选择器:选择所有具有指定类名的元素。 ID选择器:选择具有指定ID的元素。 属性选择器:选择具有指定属…

    css 2023年5月18日
    00
  • 全面介绍vue 全家桶和项目实例

    全面介绍Vue全家桶与项目实例 什么是Vue全家桶 Vue全家桶指的是一系列由Vue官方提供的插件和工具,为Vue项目提供完整的开发解决方案。其中包括: Vue.js:一个轻量级的前端MVVM框架 Vue Router:用于Vue.js项目的路由管理插件 Vuex:Vue.js应用程序的状态管理库 Vue CLI:Vue.js应用程序的标准工具链 Vue T…

    css 2023年6月9日
    00
  • 详解如何用div实现自制滚动条

    使用 div 实现自制滚动条是一种常见的前端技巧,可以帮助开发者实现更加灵活的滚动效果。本文将提供一些关于如何使用 div 实现自制滚动条的方法,包括使用 CSS 和 JavaScript 的示例说明。 使用 CSS 使用 CSS 实现自制滚动条的步骤如下: 创建一个包含内容的 div 元素,并设置其 overflow 属性为 auto。 创建一个滚动条的 …

    css 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部