css - 如何在 CSS 中编写媒体查询?

标签 css media-queries

我需要在以下情况下编写不同的样式

设备宽度大于设备高度

/* Landscape */
@media screen and (orientation:landscape) {
    .bg img {
        height: auto;
        width: 100%;
    }
}

设备高度大于设备宽度

/* Portrait */
@media screen and (orientation:portrait) {
    .bg img {
        height: 100%;
        width: auto;
    }
}

Orientation 在调整浏览器大小时的某些阶段不能完美工作。

如何编写正确的 CSS?

可以用 CSS 实现吗?

编辑:

我正在附上调整浏览器大小时的图片 enter image description here

最佳答案

您可以访问浏览器的 aspect ratio具有这些媒体查询功能:aspect-ratio |最小纵横比 |最大纵横比。有关更多信息,请查看 CSS media queries在 MDN 上。

纵向的宽高比大于 1:1,而横向则更小。为了验证,我做了一个 JSFiddle当您从“横向”切换到“纵向”时会改变颜色。

试试这个:

/* Landscape (i.e. wide viewport) */
@media screen and (min-aspect-ratio: 1/1) {
    .bg img {
        height: auto;
        width: 100%;
    }
}

/* Portrait (i.e. narrow viewport) */
@media screen and (max-aspect-ratio: 1/1) {
    .bg img {
        height: 100%;
        width: auto;
    }
}

更新:图像是文档流的一部分,不会填充视口(viewport),除非主体也用 body {height: 100%;} 填充视口(viewport),如本 JSFiddle .

尝试 img {position: absolute;} 将图像从流中拉出,这样它的尺寸就不会受到正文大小的限制。参见 JSFiddle .

关于css - 如何在 CSS 中编写媒体查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13474562/

相关文章:

javascript - 用于网站设计的 JS 与媒体查询

javascript - 放大表格中居中的图像

css - Bootstrap 3 - 禁用导航栏折叠

sass - 在 CSS3 媒体查询中使用 Sass 变量

css - 媒体屏幕 - 居中按钮

variables - 将媒体查询保存在变量中

javascript - 单击图像的 jquery 网格以显示每个特定内容,但仅显示 1 个部分

javascript - 在 Jquery 中将 CSS 属性应用于 html

css - 使用 CSS 重新定位页面布局

html - 使用多个 CSS 文件针对不同的屏幕宽度