css - 打开 chrome 开发工具时,响应式网站中断

标签 css

我正在设计一个网站并使其具有响应性。我已经添加了媒体查询,但是当我在 min-width: 320px 的断点处打开 chrome 开发工具时,站点中断(基本上所有的 css 样式都消失了)。当我将窗口大小缩放到 150% 时,我遇到了同样的问题,所有屏幕宽度 320px、481px、641px 等上的样式都消失了(这是没有打开 chrome 开发工具)。如何解决这个问题?

@media only screen and (min-width: 320px){
  //when chrome dev tool is opened, none of the styles in this breakpoint get applied
}

最佳答案

缩放级别:您只能在缩放级别 100% 时编写代码。

任何其他缩放级别的内容都不受您的控制,它在几乎每个浏览器中的行为都不同,您无法确定跨浏览器/跨设备的缩放级别(在某些情况下您无法确定)根本或者,或者他们甚至可能对此有所隐瞒)。

缩放的全部意义在于将控制权从您或网站上移交给用户。他们可以选择放大或缩小查看内容,并愿意放弃“像素完美”质量以支持可读性或鸟瞰图。设计时不要更改缩放级别。如果这样做,您的设计将在许多设备/浏览器组合上惨遭失败。

更重要的是,浏览器缩放机制是基于您的页面在缩放级别 100% 时“正常”的传统假设。如果您更改它,您不仅会在 100% 时破坏您的网站,而且很可能还会在其他缩放级别破坏它,这对可访问性和可用性是一个重大打击。不要这样做。

此外,大多数用户期望并且不介意在放大/缩小页面中看起来不完美的东西,但与此同时,他们期望在 100% 缩放级别下像素完美的质量。就像你自己一样。ツ


关于@media 查询:所有代码都是约定俗成的。当你告诉浏览器做某事时,它就会去做。通过将您的规则放在

@media (min-width: 320px) {
  // code here
}

您是在告诉浏览器:仅当设备声明的 CSS 像素宽度大于 320px 时才应用这些规则。如果您还希望在屏幕小于 320px 时应用这些内容,请删除或修改您的媒体查询。


这是一个使用移动优先方法(大多数现代框架都使用)来应用响应的示例:

/* 
 * general rules applying for all cases 
 */

.example { color: red; }
.example:before {content: 'general (applies everywhere, unless overridden)'}

@media (min-width:576px) {
  /* applying only from $sm up */
  .example { color: blue; }
  .example:before {content: '$sm (applies above 576px)'}
}

@media (min-width:768px) {
  /* applying only from $md up  */
  .example { color: green; }
  .example:before {content: '$md (applies above 768px)'}
}

@media (min-width:992px) {
  /* applying only from $lg up */
  .example { color: gray; }
  .example:before {content: '$lg (applies above 992px)'}
   
}

@media (min-width:1200px) {
  /* applying only from $lg up */
  .example { color: black; }
  .example:before {content: '$xl (applies above 1200px)'}
}
<h1 class="example"></h1>
<ul>
<li style="color:red">general</li>
<li style="color:blue">$sm</li>
<li style="color:green">$md</li>
<li style="color:gray">$lg</li>
<li style="color:black">$xl</li>
</ul>

注意 @media 不会增加特异性。它仅限制何时考虑代码,何时不考虑。

我还看到人们总是使用 only screen 编写他们的 @media 查询,只是因为他们在示例中看到了它,不知道它的作用并且害怕不要破坏东西,只是后来问为什么他们的风格不适用于打印。原理是一样的:

  • 将您想要应用到 screenprint 的任何样式放在任何 @media 查询之外
  • 将您想要专门应用于 screenprint 的每个样式放入 @media 查询中,并使用 only screen只打印

虽然 printscreen 是最常见的媒体类型,但还有一些其他媒体类型:brailleembossed手持投影语音ttytv。媒体类型的默认值为all

关于css - 打开 chrome 开发工具时,响应式网站中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50027214/

相关文章:

php - 如何打印隐藏的 iframe 的内容?

css - aurelia-cli 元素 : height in %, 和 bundle 导出的 Kendo UI 拆分器?

html - CSS 按钮不会水平居中

html - 响应表,聪明的方式

html - 并非所有列表项都正确排列

javascript - 文本光标未在 div 元素内的 contenteditable 范围内更新

jquery - onclick 隐藏和显示元素

asp.net - 注销后 CSS 渲染问题

css - 带有 Bootstrap 的父导航栏内的全宽辅助导航栏

javascript - 更改标题大小和滚动图像