所以我有一个包含数据行的div,我们仍然可以添加数据。
然而,由于我有一个max-height和overflow,我还想在底部添加一个阴影,向用户显示他可以向下滚动。
我想“仅”在div的高度达到我的类中定义的max-height时才添加这个阴影。
.container {
max-height: 546px;
overflow: auto;
@media (min-height: 540px) {
box-shadow: 0px 8px 4px -3px #313335;
}
}
我以为只要我们添加数据,当高度达到540时,这将简单地添加框阴影,但似乎不是。
不知道我试图实现的是通过jQuery还是仍然适用于css媒体查询,但在一个正确的方式?
我很感激。
3条答案
按热度按时间cbwuti441#
号
Here是为什么。
不可以,媒体查询的设计初衷不是基于页面中的元素。它们被设计为基于设备或媒体类型工作(因此它们被称为媒体查询)。宽度、高度和其他基于维度的媒体特征都是指基于屏幕的媒体中的视口或设备屏幕的维度。它们不能用于引用页面上的某个元素。
如果您需要根据页面上某个div元素的大小应用样式,则必须使用JavaScript来观察该div元素大小的变化,而不是媒体查询。
-- boltclock
至于你问题的另一部分,是的。
下面是一个片段:
我添加了绿色,以更容易地定义屏幕上的div边界,但. window re-sizing 的函数说明了你可以捕获一个div的高度,并根据它在JQuery中设置的样式属性来执行一个决定。
wfypjpf42#
我注意到你对Equinox的回答的评论:
真的很感谢你的回答!澄清了很多事情。现在想知道是否有一些特定的react而不是jQuery。- Ziko 1小时前
是的,有一种更具体的React方式不需要JQuery。
代码解释
使用React状态钩子
useState()
,你可以创建一个函数来在你的组件中分配一个cssClass
prop来切换你的#tDiv
元素。在HTML中,在
#tDiv
元素上设置className={cssClass}
,以便将cssClass
属性值作为元素上的类应用。最后,使用React效果钩子
useEffect()
在window
上添加一个事件侦听器来调用一个函数,该函数将...#tDiv
元素的大小height >= 500px
将cssClass
属性设置为要应用于#tDiv
元素的CSS类的名称cssClass
属性以删除应用于#tDiv
元素的CSS类代码示例
CodeSandBox可在这里使用:https://codesandbox.io/s/stackoverflow-61418731-k3tz3
这是组件:
这是应用
box-shadow
的elevated
类的CSS:des4xlb03#
这是一个只使用CSS的解决方案,它依赖于
max()
的使用。Firefox还不支持,但很快就会支持。另一个更支持使用clip-path的想法: