我想使用媒体查询根据他们所在的div元素的大小来调整元素的大小。我不能使用屏幕大小,因为div只是像网页中的小部件一样使用,它的大小可以变化。
当前回答
iframe中的Media Query可以作为元素查询。我已经成功地实现了这一点。这个想法来自Zurb最近发表的一篇关于响应式广告的文章。没有Javascript !
其他回答
我认为你可以用css完成你想要的唯一方法,就是为你的小部件使用流体容器。如果你的容器的宽度是屏幕的一个百分比,那么你可以根据你的容器的宽度使用媒体查询来设置样式,现在你会知道每个屏幕的尺寸是你的容器的尺寸。例如,假设你决定将容器的宽度设置为屏幕宽度的50%。然后对于屏幕宽度为1200px的容器,你知道你的容器是600px
.myContainer {
width: 50%;
}
/* you know know that your container is 600px
* so you style accordingly
*/
@media (max-width: 1200px) {
/* your css for 600px container */
}
iframe中的Media Query可以作为元素查询。我已经成功地实现了这一点。这个想法来自Zurb最近发表的一篇关于响应式广告的文章。没有Javascript !
我刚刚创建了一个javascript shim来实现这个目标。如果您愿意,可以查看一下,这是一个概念验证,但请注意:这是一个早期版本,仍然需要一些工作。
https://github.com/marcj/css-element-queries
我也在考虑媒体查询,但后来我发现了这个:
http://www.mademyday.de/css-height-equals-width-with-pure-css.html 使用CSS维护div的纵横比
只需创建一个包装器<div>,并为padding-bottom设置一个百分比值,如下所示:
div { 宽度:100%; padding-bottom: 75%; 背景:黄金;/** <——用于演示**/ } < div > < / div >
它将生成一个<div>,其高度等于其容器宽度的75%(4:3长宽比)。
这种技术还可以与媒体查询和一些关于页面布局的专门知识相结合,以实现更细粒度的控制。
这足够我用了。这也足够满足你的需求了。
您可以使用ResizeObserver API。它还处于早期阶段,所以还不是所有的浏览器都支持它(但有一些填充程序可以帮助你做到这一点)。
这个API允许您在调整DOM元素大小时附加一个事件侦听器。
演示1 -演示2