【问题标题】:Wordpress - Responsive width with media queryWordpress - 带有媒体查询的响应式宽度
【发布时间】:2020-12-14 15:55:11
【问题描述】:

我使用的是 Mikado 的 Backpack Traveler 主题,我对从移动设备查看文章的宽度不满意。我有一个想法,但我想在做之前在这里征求意见,因为我是新手。

这是主题当前使用的代码(我将添加2个示例):

@media only screen and (max-width:768px) {
    .mkdf-header-vertical .elementor-widget-wrap>.mkdf-row-grid-section.elementor-element,
    .mkdf-header-vertical .mkdf-container-inner,
    .mkdf-header-vertical .mkdf-grid,
    .mkdf-header-vertical .mkdf-row-grid-section {
        width: 600px
    }
}

@media only screen and (max-width:680px) {
    .mkdf-header-vertical .elementor-widget-wrap>.mkdf-row-grid-section.elementor-element,
    .mkdf-header-vertical .mkdf-container-inner,
    .mkdf-header-vertical .mkdf-grid,
    .mkdf-header-vertical .mkdf-row-grid-section {
        width: 420px
    }
}

如您所见,当手机尺寸为最大或接近最大宽度参数时,大部分像素都不会被使用。我的想法是:

  1. 为每 20 个像素创建更多 @media 查询代码行(假设从 320 像素到 640 像素) 这是 16 行 @media 查询行,像素大小为 320,340,360 等。
  2. 将宽度设置为 calc(100% - 20px)

这肯定不是最好的方法,但我没有其他想法,所以我决定在这里问。

编辑:我已联系主题开发人员,他们告诉我改用此代码

@media only screen and (max-width: 480px){
 .single-post .elementor-widget-wrap>.mkdf-row-grid-section.elementor-element, 
 .mkdf-container-inner, .mkdf-grid, .mkdf-row-grid-section {
 width: X; 
 } 
}

我猜 .single-post 仅适用于文章本身,因此在弄乱宽度大小时不会破坏任何内容。我已将宽度设置为 95%,最大宽度为 480 像素。我会为 680px、768px 和 1024px 做同样的事情。

编辑 2:我尝试了三星 Galaxy S9+ 上的新变化,一切看起来都很棒。有些元素不再居中在主页上,但我会弄清楚的。

【问题讨论】:

  • 不,不要为每 20 像素创建媒体查询——这太过分了,而且很难管理。您可以简单地使用百分比 - 即使没有计算,例如width:94% 提供 3% 的边距,与屏幕尺寸成比例的边距可以更美观。但是请注意,如果其他元素依赖于特定宽度,则对主题宽度的任何更改都可能会破坏布局
  • 你能先检查一下主题支持吗?因为似乎这是一个管理良好的主题。我相信它很容易解决。也许他们有一个主题设置,用于更宽的视图,比如全宽视图模板。
  • @Rosh_LK 我检查了它,并没有默认带有主题的全宽模板。我有一个“Elementor Full Width”,但我只有 1 个 elementor 页面。
  • @FluffyKitten % 仍然可以在媒体查询中工作吗?例如,我将最大宽度设置为 480 像素,并将宽度设置为 94%。如果 380 像素设备访问我的网站,宽度是 380 像素的 94% 还是 480 像素的 94%?感谢您的帮助!
  • @FluffyKitten 我也联系了主题开发人员,但因为我的支持过期了,我没有得到完整的答案,但它仍然是一个信息丰富的答案。他们代码的不同之处在于没有 mkdf-header-vertical 类。代码以“.single-post”类开头,所以我想这是我想要实现的正确方法。

标签: css wordpress width media


【解决方案1】:

您可以使用vw(视口宽度)单位并减少(甚至可能消除)对这些@media 断点的需求,例如像这样:

.mkdf-header-vertical .elementor-widget-wrap>.mkdf-row-grid-section.elementor-element,
.mkdf-header-vertical .mkdf-container-inner,
.mkdf-header-vertical .mkdf-grid,
.mkdf-header-vertical .mkdf-row-grid-section {
    width: 95vw;
}

vw 单位表示视口宽度的 1%(浏览器窗口大小),因此 95vw 将是浏览器窗口宽度的 95%(或全屏浏览器的屏幕宽度,如手机上的浏览器)和平板电脑),无论设备大小如何。


编辑:根据 FluffyKitten 的评论,使用旧的 % 比使用 vw 更好。如果元素在同一个容器或不同的容器下但宽度一致,那么像下面这样会更好:

.mkdf-header-vertical .elementor-widget-wrap>.mkdf-row-grid-section.elementor-element,
.mkdf-header-vertical .mkdf-container-inner,
.mkdf-header-vertical .mkdf-grid,
.mkdf-header-vertical .mkdf-row-grid-section {
    width: 95%;
}

顺便说一句。 %方式vw@media 断点更向后兼容。

在这种情况下,所有内容都在.mkdf-header-vertical 下,因此如果该类只有一个容器,或者该类的容器具有一致的宽度,并且如果.elementor-widget-wrap 是其父.mkdf-header-vertical 的100%,那么这些元素确实会有一致的宽度。

如果您希望容器边缘和这些元素之间的像素数保持一致,那么假设上一段中的条件成立,您可以简单地执行类似的操作

.mkdf-header-vertical { 
    padding-left: 20px;
    padding-right: 20px;
}

并将上述宽度设置为100%

【讨论】:

  • 我们不知道这些元素的容器是什么,因此根据浏览器宽度而不是容器宽度设置宽度可能会产生意想不到的效果。简单地使用百分比将考虑容器宽度而不仅仅是窗口。
  • @FluffyKitten 似乎OP希望这些元素几乎与浏览器宽度一样宽,所以我做出了相应的回答。当然,如果元素在同一个容器下(或不同的容器,但宽度相同),那么使用% 将是产生相同效果的更好选择。我已经相应地编辑了我的答案。
  • 我继续将其从原始代码更改为 95vw,但由于某种原因我没有看到该代码。我会将其更改为 95%,同时保留 @media 断点,因为我觉得主题开发人员添加了它们,所以没有任何中断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 2016-08-04
  • 2013-05-18
  • 1970-01-01
  • 2013-10-19
  • 2023-03-19
相关资源
最近更新 更多