html - 使用媒体查询斗争覆盖 CSS

标签 html css media-queries overriding

我一直在网络上进行高低搜索,尤其是在 Stack Overflow 上,但我在使用 @media 查询 覆盖我的基本 CSS 样式时仍然遇到一些问题。

首先,我的网站是我开发的用于 WordPress 的自定义主题(并不是说它应该有所作为)。

这是设置...

文件:样式.css

  1. 我在文件顶部导入我的其他 CSS 样式 - 这包括我的 mobile.css 文件,我在该文件中覆盖了基本样式。
  2. 然后定义默认的 CSS 样式。

#main-nav .nav-wrapper{
margin: 0 auto;
padding: 0;
width: 594px;
}

#main-nav{
background-color: #F1F5C8;
padding: 10px 0;
}

#main-nav .border-image-left{
float: left;
width: 37px;
height: 43px;
background-image: url('images/navi_left_border.png');
}

#main-nav .border-image-right{
float: left;
width: 37px;
height: 43px;
background-image: url('images/navi_right_border.png');
}

#main-nav ul{
float: left;
margin: 0 auto;
padding: 0;
list-style: none;
width: 520px;
height: 43px;
line-height: 43px;
background-color: #DBEA99;
}

#main-nav ul li{
float: left;
display: block;
text-align: center;
padding: 0 20px;
width: 130px; /* fallback for non-calc() browsers */
width: calc( 100% / 4 );
}

#main-nav a, #main-nav a:visited{
display: block;
text-decoration: none;
color: #06421A;
}

#main-nav ul li a:hover{
opacity: 0.6;
}

文件:mobile.css

@media screen and ( min-width: 511px ) and ( max-width: 620px ){

/*****************/
/** Navigation **/
/***************/

#main-nav{
padding: 0;
}

#main-nav .nav-wrapper{
margin: 0 auto;
padding: 0;
width: inherit;
}

#main-nav ul{
width: 100%;
height: 53px;
line-height: 53px;
}

#main-nav .border-image-left, #main-nav .border-image-right{
width: 0;
height: 0;
background-image: none;
display: none;
}

#main-nav ul li{
padding: 0;
width: auto;
margin: 0;
}
}

因此,如果您能看到我做错了什么或有任何建议让我尝试,我们将不胜感激。整个星期都在讨论这个问题!

P.s:我在 style.css 文件的开头导入了带有其他样式的 mobile.css 文件,其他覆盖似乎工作正常,但不是这一点。

如果您想查看实时版本以澄清代码,请告诉我...

最佳答案

问题出在您包含 CSS 文件 mobile.css 的顺序上。这是命令。第一个文件是 style.css,然后是通过 style.css 包含/导入的 mobiel.css,如下所示。

@import "style/css/mobile.css";

CSS 不是移动优先的。相反,使用 max-widthmin-width 来定位设备宽度。

enter image description here enter image description here

由于 mobile.css 在其余 style.css 属性之前加载,它的属性将被 style.css 覆盖,无论宽度(我相信这是由 media="screen" 属性引起的)

您可以让您的 CSS 移动优先,这意味着所有属性都针对移动设备进行了优化,然后随着屏幕变宽,您可以为元素应用平板电脑和桌面优化的 CSS。这很费力。最好的解决方案是在 style.css 之后加载 mobile.css,如下所示

<link rel="stylesheet" href="http://alyazmalim.co.uk/wp-content/themes/alyazmalim/style.css" type="text/css"> <!-- remove media attribute or set it to "all" -->
<link rel="stylesheet" href="http://alyazmalim.co.uk/wp-content/themes/alyazmalim/style/css/mobile.css" type="text/css"> 

关于html - 使用媒体查询斗争覆盖 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33186755/

相关文章:

javascript - 网站部分悬停功能在某些调整大小时消失

javascript - 无法覆盖 CSS 规则

html - 如何仅使用 CSS 实现剧透引用?

javascript - 事件监视器表单不断重定向

javascript - 识别鼠标悬停在 onmouseover 函数中的元素

css - 嵌套按钮 + 在屏幕上的位置

css - 超出范围

html - 我的一些 div 无法填满屏幕的宽度。我该如何解决?

jquery - 如何使用来自不同图像文件的一个图标?

css - 我应该使用多少个媒体查询?在什么宽度?