Я пытаюсь очистить два элемента от плавающих, но это не работает, и я не могу понять, почему. Ответ, наверное, (буквально) прямо перед моими глазами.
Возможно, это связано с моими медиа-запросами или другими стилями до очистки. Сама очистка может даже работать, но свойство float — нет.
Это два элемента в моей таблице стилей:
/* main navigation on small screens like smartphones */
#main_nav {
position: sticky;
top: 0;
text-align: center;
box-shadow: 0 0 1.563rem 0;
}
#main_nav ul {
margin: 0;
padding: 0;
background-color: #1f1f14;
border-top: 0.0625rem solid #faf352;
}
#main_nav ul li {
list-style-type: none;
display: inline-block;
margin: 0.625rem 0;
width: 22%;
padding: 0;
text-align: center;
}
#main_nav ul li a {
padding: 0.2rem;
color: #D7D7CF;
font-family: 'Finger Paint';
font-size: 0.7rem;
text-decoration: none;
}
/* main container on small screens */
main {
padding: 0.2rem 0.5rem 0 0.5rem;
}
/* large desktop screens - more than 1000px width */
@media screen and (min-width: 62.500em) {
#main_nav {
position: static;
float: left;
width: 20%;
padding: 1rem;
box-shadow: none;
}
#main_nav ul li {
width: 100%;
padding: 0.5rem;
display: block;
}
#main_nav ul li a {
display: inline-block;
width: 90%;
font-size: 0.9rem;
margin: 0.2rem;
padding: 0.3rem;
}
main {
width: 95%;
float: left;
padding: 0 1rem;
}
/* clear float */
.cf:before,
.cf:after {
content: "";
display: table;
display: block;
}
.cf:after {
clear: both;
}
}
}<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<title>page title</title>
<link href = "mystyles.css" rel = "stylesheet" type = "text/css">
</head>
<body>
<div id = "holder">
<header id = "page_header">
<h1><span class = "yellow">This is</span> a heading</h1>
</header>
<nav id = "main_nav" class = "cf">
<ul>
<li><a href = "#">link one</a></li>
<li><a href = "#">link two</a></li>
<li><a href = "#">link three</a></li>
<li><a href = "#">link four</a></li>
</ul>
</nav>
<main class = "cf">
<section>
<article>
<h3>This is an awesome heading</h3>
<p>text</p>
<img src = "images/st-color-300px.jpg" alt = "picture">
<p>text</p>
</article>
</section>
</main>
</div>
</body>
</html>Я пытаюсь очистить поплавок для main_nav и main. Они оба находятся внутри одного и того же контейнера div (id = "holder") и оба плавают влево. Но когда я использую для них clearfix, они продолжают плавать. Редактировать: они оба плавают влево, поэтому они должны выстраиваться рядом друг с другом в контейнере «держатель», но это не так. Контейнер «холдер» за ними схлопывается, но основная навигация main_nav и main-контейнер с содержимым не выстраиваются в линию, они продолжают складываться горизонтально. Надеюсь правильно объяснил.






Примените свой clearfix к контейнеру, а не к плавающим элементам. Здесь вы должны применить clearfix к #holder (хотя я бы посоветовал добавить класс и нацелить его вместо идентификатора, здесь я использовал container).
/* main navigation on small screens like smartphones */
#main_nav {
position: sticky;
top: 0;
text-align: center;
box-shadow: 0 0 1.563rem 0;
}
#main_nav ul {
margin: 0;
padding: 0;
background-color: #1f1f14;
border-top: 0.0625rem solid #faf352;
}
#main_nav ul li {
list-style-type: none;
display: inline-block;
margin: 0.625rem 0;
width: 22%;
padding: 0;
text-align: center;
}
#main_nav ul li a {
padding: 0.2rem;
color: #D7D7CF;
font-family: 'Finger Paint';
font-size: 0.7rem;
text-decoration: none;
}
/* main container on small screens */
main {
padding: 0.2rem 0.5rem 0 0.5rem;
}
/* large desktop screens - more than 1000px width */
@media screen and (min-width: 62.500em) {
#main_nav {
position: static;
float: left;
width: 20%;
padding: 1rem;
box-shadow: none;
}
#main_nav ul li {
width: 100%;
padding: 0.5rem;
display: block;
}
#main_nav ul li a {
display: inline-block;
width: 90%;
font-size: 0.9rem;
margin: 0.2rem;
padding: 0.3rem;
}
main {
width: 95%;
float: left;
padding: 0 1rem;
}
/* clear float */
.container:after {
content: "";
display: table;
clear: both;
}
}<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<title>page title</title>
<link href = "mystyles.css" rel = "stylesheet" type = "text/css">
</head>
<body>
<div id = "holder" class = "container">
<header id = "page_header">
<h1><span class = "yellow">This is</span> a heading</h1>
</header>
<nav id = "main_nav" class = "cf">
<ul>
<li><a href = "#">link one</a></li>
<li><a href = "#">link two</a></li>
<li><a href = "#">link three</a></li>
<li><a href = "#">link four</a></li>
</ul>
</nav>
<main class = "cf">
<section>
<article>
<h3>This is an awesome heading</h3>
<p>text</p>
<img src = "images/st-color-300px.jpg" alt = "picture">
<p>text</p>
</article>
</section>
</main>
</div>
</body>
</html>Это сделало это. Большое спасибо!
Не могли бы вы указать немного больше, чего вы пытаетесь достичь? Если это то, что я думаю, просто удалите это
main:width: 95%; float: left; padding: 0 1rem;в своем медиа-запросе.