当前位置: 首页 > 面试题库 >

在CSS3或jQuery中,对元素的宽度进行动画处理(从0到100%),并且它的包装器仅根据需要的宽度而没有预设的宽度

公冶子安
2023-03-14
问题内容

悬停时.wrapper,其子元素.contents应从0px变为其自然宽度。然后,将鼠标从中移出时.wrapper,它应重新动画到0px。该.wrapper元件应仅一样宽,它需要被(允许.contents生长),所以.wrapper应在宽度成长和收缩宽度为.contents一样。不应设置的宽度.contents。我正在使用CSS3,但是可以在jQuery中完成,那很好。

问题: 请参见JSfiddle

  1. .wrapper 不仅需要它的宽度。
  2. .contents增长时,几乎达到全宽时,它会跳到下一行
  3. 当悬停于时.wrapper.contents消失,应该将其动画化为0px

    .wrapper {

    display: inline-block;
    
    height: 20px;
    
    width: auto;
    
    padding:10px;
    
    background:#DDD;
    

    }

    .contents {

    display:inline-block;
    
    width:0%;
    
    white-space:nowrap;
    
    overflow:hidden;
    
    background:#c3c;
    

    }

    .wrapper:hover .contents {

    -webkit-transition: width 1s ease-in-out;
    
    -moz-transition: width 1s ease-in-out;
    
    -o-transition: width 1s ease-in-out;
    
    transition: width 1s ease-in-out;
    
    width:100%;
    

    }

    <span>+</span>
    
    <div class="contents">These are the contents of this div</div>
    

问题答案:

我想我明白了。

.wrapper {

    background:#DDD;

    display:inline-block;

    padding: 10px;

    height: 20px;

    width:auto;

}



.label {

    display: inline-block;

    width: 1em;

}



.contents, .contents .inner {

    display:inline-block;

}



.contents {

    white-space:nowrap;

    margin-left: -1em;

    padding-left: 1em;

}



.contents .inner {

    background:#c3c;

    width:0%;

    overflow:hidden;

    -webkit-transition: width 1s ease-in-out;

    -moz-transition: width 1s ease-in-out;

    -o-transition: width 1s ease-in-out;

    transition: width 1s ease-in-out;

}







.wrapper:hover .contents .inner {



    width:100%;

}


<div class="wrapper">

    <span class="label">+</span><div class="contents">

        <div class="inner">

            These are the contents of this div

        </div>

    </div>

</div>

动画化为100%会包装,因为该框大于可用宽度(100%减去+以及其后的空白)。

相反,您可以为内部元素设置动画,该元素100%的总宽度为.contents



 类似资料:
  • 问题内容: 我正在与offsetWidth属性的怪异(我认为)作斗争。 这是场景: 可以说,我的js中有一个 span 标签,在某个时候,我对该元素执行css3转换,例如: 此时,日志返回模糊值,就像它不知道说什么一样。 有什么建议吗? 问题答案: 为我返回正确的值。

  • 问题内容: 我必须在屏幕高度上安装iframe。显然,我希望宽度为100%,但是由于这种方法不起作用,因此我使用了100vh。但是像vw这样的vh并不完全是100%。在我的笔记本电脑中,通过镀铬虽然100%的宽度可以完美呈现而不需要水平滚动条,但vw大约可以增加一厘米。 问题答案: vw和vh分别代表视口宽度和视口高度。 使用代替的区别在于,虽然将使元素适合所有可用空间,但视口宽度具有特定的度量,

  • 我必须在屏幕高度上安装iframe。显然,我想要100%的宽度,但,因为这不起作用,我使用100VH。但像大众这样的vh并不完全是100%。在我的笔记本电脑通过chrome虽然100%的宽度呈现完美不需要水平滚动条,大众有大约一厘米额外。

  • 问题内容: 在下面的示例中,我有一个具有以下样式的按钮… 但是它会自动缩放到100%,而不是内容的宽度。您可以设置一个明确的宽度,但是那样一来您的文本就不能自然地换行。 如何制作一个内部文本以flexbox居中但不能增长到适合容器大小的按钮? 问题答案: 而不是使用容器。 这会将容器从块级(占用其父级的整个宽度)切换到内联级(占用其内容的宽度)。 这上浆行为类似于对比。

  • 问题内容: 如何为宽度创建CSS规则 默认使用100%宽度 如果100%的宽度超过了某个像素的宽度(例如512像素),则该宽度将被限制为该像素的宽度 我不确定宽度和最大宽度关系,也不知道如何支持calc()或可以表达这一点。这需要与最新的WebKit浏览器和Firefox 4配合使用。不需要IE8等支持。 问题答案: 这实际上是的预期用途。如果元素的计算值(实际值)超过,它将被限制为最大值,而不是

  • 问题内容: 您可以设置诸如,和的内联元素的宽度,但是在放置它们之前不会发现任何效果。 a)我认为不能设置内联元素的内联宽度? b)假设可以设置宽度-在放置内联元素之前,我们不会注意到任何效果(因此我们指定了宽度)。位置如何/在哪里? c)为什么仅当我们“定位”内联元素时才显示它们的宽度? 问题答案: 正如其他人提到的那样,设置内联元素的宽度(或其他一些与位置相关的属性)将导致浏览器将元素显示为块元