【问题标题】:Change paragraph content when height of a div reaches a certain percentage当div的高度达到一定百分比时更改段落内容
【发布时间】:2023-04-03 01:26:01
【问题描述】:

我正在为网站制作加载程序。 HTML如下:

<div class="loadingContainer">
    <div class="greyContainer">
        <img class="eggGrey" src="img/egg-grey.png">
        <p id="bluePercent">50%</p>
    </div>

    <div class="blueContainer">
        <img class="eggBlue" src="img/egg-blue.png">
        <p class="greyPercent">50%</p>
    </div>
</div>

当元素 blueContainer 的高度为 2% 时,我希望两个段落中的文本均为 2%。我希望段落文本始终以 blueContainer 的百分比显示高度。高度值是通过外部 CSS 文件应用的,我不太精通 Javascript 语言,我尝试了一些方法,但我不知道该怎么做。

编辑:我尝试过的一些事情(并且可能惨遭失败):

function percentages(){
     document.getElementByClassName("greyPercent, bluePercent"){
         if (document.getElementByClassName("greyContainer, blueContainer"){
        }
    }
}

这也是我被困住的地方,因为我不知道如何告诉 javascript 在元素具有一定高度时运行该函数。

编辑:这是一个 jsfiddle 来说明我在做什么。由于缺少图像,我给容器设置了背景色。

https://jsfiddle.net/1s5tw6es/

【问题讨论】:

  • 我们想知道您尝试过哪些方法! :)
  • div 的高度是在页面显示后变化,还是在 CSS 中定义?
  • div 的高度现在在 CSS 中定义。这是为了让我为之做的人可以轻松地在他的网站上实现它。
  • 你期待这样吗? (不处理窗口调整大小等)update css -&gt; reload page -&gt; (update text automatically)
  • 基本上,每当高度发生变化时,我需要一些 javascript 来以百分比显示段落中 blueContainer 的高度。可能会发生更改,因为已设置不同的 javascript 来更改元素的高度或直接编辑 css 本身。整个事情将成为网页的预加载器。蓝色部分将“填充”灰色区域,同时段落以百分比显示进度。

标签: javascript html css


【解决方案1】:

来自https://stackoverflow.com/a/9628472/2818869

首先,没有开箱即用的 css-changes 事件,但您可以 自己创建一个,因为onchange 仅适用于:input 元素。 不适用于 CSS 更改。

有两种方法可以跟踪 CSS 更改。

  1. 每隔 x 次(在示例中为 500 毫秒)检查 DOM 元素的 CSS 更改。
  2. 更改元素 css 时触发事件。
  3. 使用DOMAttrModified 突变事件。但它已被弃用,所以我将跳过它。

现在,有更多的解决方案。


但在这种情况下,我会创建像 setProgress 这样的函数,它会同时改变元素高度和段落。

示例:http://jsfiddle.net/e59u3p4j/1/

【讨论】:

  • 是的,成功了。只需要做一点点修补,但它现在就像一个魅力。谢谢!
【解决方案2】:

这应该可行:

$("document").ready(function(){  //In case you didn't use this

    $(window).resize(function(){
            $('#bluePercent').html($('.blueContainer').css('height')/16.0*100); //Converting height into percentage and adding it to the p tag
        });
});

【讨论】:

  • 我将javascript粘贴到我的js文件中,但是当我改变blueContainer的高度时,段落没有改变。
  • ('.blueContainer' 之前缺失。
  • @TobyvanKempen 如果还没有加载 jQuery,您还必须添加脚本标签。
  • @unarist 是的,像这样,对吧? &lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"&gt;&lt;/script&gt; 另外,使 (''+$('.blueContainer') 无效。
  • @DhruvRamani 仅供参考:我将 $('.blueContainer').resize 替换为 $(window).resize,它起作用了。
猜你喜欢
  • 1970-01-01
  • 2014-03-20
  • 2018-04-16
  • 2020-03-21
  • 2016-07-19
  • 2012-06-07
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多