Divs перекрываются в макете сайта.

  • Автор темы MaggyLP
  • 86
  • Обновлено
  • 17, May 2024
  • #1
Как предотвратить перекрытие моих DIVS в макете веб-сайта.

 html, body {

margin: 0;

padding: 0;

}

body{background-color:#EFF;}

#top {

background-color: #000;

max-width: 100%;

height: 30px;

padding: 1em;

border-bottom: solid 2px #000;

margin:0 0 0 0;

}

#left {

background-color:#555;

width:150px;

height: 722px;

padding: 5px;

margin-bottom: 0;

float: left;

position:relative;

}

#main {

background-color: #FFF;

max-width: 464px;

height: 700px;

padding: 5px;

border: solid 1px #888;

border-radius: 5em;

margin: 10px auto 10px;

position:relative;

}

#footer {

background-color: #000;

max-width: 100%;

height: 30px;

padding: 1em;

border-top: solid 2px #000;

margin:0 0 0 0;

}
HTML:
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="ширина = ширина устройства, высота = высота устройства, начальный масштаб = 1" > <link rel="stylesheet" href="screen.css" media="screen,projection,tv" > <title> Pokemon Go Trend </title> </head><body> <div id="top"></div> <div id="left"></div> <div id="main"></div> <div id="footer"></div> </body></html>
Код (CSS):

MaggyLP


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
Нет, диджей, это способ выучить вредные привычки под видом легкости.

Как легче разобраться в элементе, который имеет дюжину или около того токенов классов (видно на реальных сайтах) или в элементах, вложенных в глубину более восьми (также встречается слишком часто), когда разумная структура может разместить его на две или три глубины?

Bootstrap приводит к дрянному кодированию, сложной отладке и дорогостоящему обслуживанию.

Когда поддержка нетривиального коммерческого веб-сайта может обойтись в два с половиной раза дороже первоначальной стоимости разработки (а кодирование — это тривиальная сумма по сравнению с общей суммой) ежегодно, увеличивать это соотношение без здравой причины - полнейшая глупость. Гэри
 

VIP2


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 20, May 2024
  • #3
Кроме того, подумайте об использовании фреймворка, который сделает вашу жизнь в 100 раз проще. Самый популярный — бутстрап.http://getbootstrap.com/css/

При загрузке ваш сайт разбит на 12 столбцов. Тогда легко указать макет примерно так:
 <div class="row">

<!-- this takes up 100% width -->

<div class="col-md-12"> Top Section </div>

</div>

<div class="row">

<!-- this takes up 50% -->

<div class="col-md-6"> Left Section </div>

<!-- this takes up 50% -->

<div class="col-md-6"> Right Section </div>

</div>
Код (разметка):
 

n_snork


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 21, May 2024
  • #4
На самом деле, Кристина, здесь дело не в этом.

Это просто непонимание того, что плавающие элементы наполовину находятся вне потока, что означает, что основная секция скользит под левую секцию.

Так и должно быть, если не вмешивается автор.

Я согласен, что обычно это плохая практика и просить вырвать большие куски из нижних областей, чтобы установить высоту блоков контента. Гэри
 

Pro100den1


Рег
07 Sep, 2012

Тем
0

Постов
1

Баллов
1
  • 29, May 2024
  • #5
1. Вы еще не понимаете, как работают элементы с плавающей запятой и элементы рядом с ними.

2. Вы забываете основы блочного контейнера.

3. Я предполагаю, что вы смотрели на стилистику [sic] от авторов тем и плагинов WP, которые склонны бросать {position:relative;} почти во все, не имея понятия, почему.

(На самом деле это очень старая вещь IE {ошибка}, которая в большинстве случаев даже не была нужна тогда, если они понимали, что IE не работает hasLayout.) О. Элементы блока, смежные с поплавком, не знают о его существовании и перетекают под поплавок.

Только встроенное содержимое блока «видит» поплавок.

Чтобы элемент знал о плавающем элементе, необходимо создать новый контекст форматирования блока.

Простой способ сделать это — создать элемент {overflow: скрытый;}. Есть полдюжины способов сделать это, см. http://gtwebdev.com/workshop/floats/enclosing-floats.php

и игнорировать вещи IE6. Это было написано очень давно. Это также должно решить проблему {margin: auto;}. Б. Блок-контейнер автоматически заполняет свой собственный контейнер из стороны в сторону.

Если вы укажете ширину 100% (например) и добавите отступы или границы, вы создадите горизонтальное переполнение.

{max-width: 100%;} может быть полезен, но я не могу придумать ни одного варианта. C. Это самоочевидно.

Не применяйте относительное позиционирование без веской и рациональной причины. D. Просто потому, что если вы объявляете цвет, объявляйте и цвет его фона, и наоборот.
 

<!DOCTYPE HTML>

<html lang="en">

<head>

<meta charset="utf-8">

<meta content=

"ширина = ширина устройства, высота = высота устройства, начальный масштаб = 1"

name="viewport">

<title>

Test document

</title>

<style type="text/css">

/*<![CDATA[*/

html {

padding: 0;}

body {

background-color: white;

color: black;

font: 100%/1.5 sans-serif;

margin: 0;}

p {

font-size: 1em;}

h1,

h2 {

font-family: serif;

margin-bottom: 0;}

/* end boilerplate */

#top {

background-color: #000;

color: white;

height: 30px;

padding: 1em;

border-bottom: solid 2px #000;

margin:0 0 0 0;}

#left {

background-color:#555;

color: white;

width:150px;

height: 722px;

padding: 5px;

margin-bottom: 0;

float: left;}

#main {

background-color: #FFF;

color: black;

max-width: 464px;

height: 700px;

overflow: hidden;

padding: 5em;

border: solid 1px #888;

border-radius: 5em;

margin: 10px auto 10px;}

#footer {

background-color: #000;

color: white;

height: 30px;

padding: 1em;

border-top: solid 2px #000;}

/*]]>*/

</style>

</head>

<body>

<div id="top">top</div>

<div id="left">left</div>

<div id="main">main</div>

<div id="footer">footer</div>

</body>

</html>
Код (разметка): //edit: мне очень не нравится, что форматирование теряется при вставке.

~gt Гэри
 

kitanavalen


Рег
17 Apr, 2012

Тем
0

Постов
1

Баллов
1
  • 01, Jun 2024
  • #6
Что вы можете.

Возможно, вы не готовы к интерактивному сайту, но большинство сайтов в любом случае не являются интерактивными и эффективно работают без CSS, сценариев на стороне клиента или сервера.

HTML действительно прост, как отметил @PoPSiCLe.

Существует не так много тегов элементов, которые вы бы использовали регулярно, а другие вы можете найти по мере необходимости.

Кривая обучения настолько постепенна, насколько вы этого хотите. Держите эти две страницы открытыми в браузере:
HTML4

и
CSS2.1

. Да, они были заменены, но основы по-прежнему остаются в силе, а рекомендации HTML4 и CSS2.1 гораздо легче найти и понять (как только вы их освоите), чем рекомендации HTML5 и CSS3. У тебя все хорошо, но принимай все как есть; не торопись.

Освойтесь с основными тегами и свойствами CSS, которые вы регулярно используете, прежде чем приступить к обучению.

один новая вещь за раз. Следуй совету PoP, KISS. ваше здоровье, Гэри
 

kingPRO


Рег
08 Dec, 2013

Тем
1

Постов
3

Баллов
13
  • 03, Jun 2024
  • #7
Спасибо, Гэри. Честно говоря, большая часть моего практического обучения получена на W3Schools.com и исправлениях пользователей с этого форума. Наверное, я немного забегаю вперед, понятно, что я пока не готов создавать сайт с нуля.

Мне еще нужно поближе познакомиться со всеми элементами HTML и CSS.

Хотя я уже прошел большую часть пути. Я не знаю, как я поддался заблуждению, что выучить CSS и HTML легко, потому что это не так.

Теория, да. Дисциплина, не более того.

Мне нужно уделять больше времени обучению.

Эрр.

Прошло всего несколько недель, мне еще предстоит пройти долгий путь.
 

Ермак


Рег
06 Jun, 2015

Тем
1

Постов
2

Баллов
12
  • 05, Jun 2024
  • #8
HTML — это просто.

CSS немного сложнее, но все же довольно прост.

Суть в том, чтобы создать HTML и контент, затем применить CSS, и если у вас есть какое-то представление о том, как вам нужно/хотеть, чтобы страница выглядела, вы обычно можете добавить CSS, чтобы определенные элементы отображались так, как вы хотите.

а если этого недостаточно, вы можете добавить нейтральные элементы (в основном элементы div и span), чтобы содержать или перемещать другие элементы. Конечно, CSS может быть сложным, но обычно этого не должно быть, если иметь в виду KISS — будь проще, глупый.

То есть, пока вы не делаете с веб-сайтом ничего, чего изначально не должно быть в сети, это обычно не так уж и сложно.
 

Никита Рябин


Рег
04 Feb, 2012

Тем
3

Постов
23

Баллов
53
  • 07, Jun 2024
  • #9
@kk5st, стоит ли мне рассказать @DJ Swanepoel чистую правду? Я обменял двустволку на СПАС-15...



@Web_Dev_Chris, в 99,99% случаев, когда вы объявляете фиксированную высоту для чего-то с текстом, вы совершенно и полностью облажались и не поняли даже простейшей концепции макета! То, что вы возитесь с таким макетом DIV без фактического СОДЕРЖИМОГО внутри них, вероятно, изрядная часть того, что кусает вас сзади.

СОДЕРЖАНИЕ ПЕРВОЕ.

СЕМАНТИЧЕСКАЯ РАЗМЕСТКА ВТОРАЯ, ЗАТЕМ вы можете обернуть DIV по мере необходимости и добавить стиль... Возиться с пустым DIV? ЭПИЧНЫЙ ФЕЙЛ!
 

fНеизв.


Рег
18 Oct, 2012

Тем
0

Постов
3

Баллов
3
  • 09, Jun 2024
  • #10
Я далек от эксперта, но похоже, что причина перекрытия ваших элементов div заключается в ваших фиксированных высотах - при условии, что перекрытие, о котором вы спрашиваете, - это #left.

Кроме того, как бы то ни было, в вашем HTML есть #top, но у вас нет ничего для его стилизации.

Наконец, похоже, что это будет сайт неотзывчивого типа из-за фиксированных настроек (px). Надеюсь, те, кто знает намного больше меня, подключатся и ответят на ваш вопрос более точно. Удачи . . .
 

Доцент Помидоров


Рег
03 Jan, 2013

Тем
0

Постов
4

Баллов
4
  • 11, Jun 2024
  • #11
Извини, диджей.

Bootstrap — одна из самых жалких и глупых идей в веб-разработке.

Он основан на старой-старой парадигме печати — вклеивании контента для офсетной печати.

Интернет не печатается. Буткап, как многие здесь его называют, следует соскоблить палкой перед входом в дом (цитата по @deathshadow). По своей сути он раздувает разметку и таблицы стилей.

Токены классов и идентификаторов несемантические и слишком часто складываются друг в друга, что неизбежно приводит к увеличению затрат на обслуживание и отладку. Гэри
 

seo-blondinko


Рег
21 Jun, 2010

Тем
3

Постов
12

Баллов
42
  • 13, Jun 2024
  • #12
Вы столкнулись с этой проблемой из-за фиксированной высоты.

Вам также необходимо настроить левое позиционирование, чтобы убрать перекрытие на вашем сайте.

Чаще всего эта ошибка возникает в мобильных приложениях, в том числе из-за регулировки высоты.

Вам следует обратиться к любому веб-разработчику, если вы не получили результатов с регулировкой высоты для получения гораздо лучших и профессиональных решений.
 

AnkuAD


Рег
07 May, 2014

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966