Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/40: Рейтинг темы: голосов - 40, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
1

Как сделать чтобы блоки не видели друг друга?

17.12.2015, 17:52. Показов 7695. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал скрипт, который вставляет блоки разных размеров, цветов и с различными выравниваниями и отступами.
Убил 2 дня 400 строк кода на пхп. Только что понял, что я не учел маленькую деталь, потому все работает некорректно.

Суть проблемы.
Есть родительский блок, квадрат 450 на 450.
В него вставляются блоки поменьше.
В самом начале я подумал "так, элементы с position:relative" выпадают из потока и другие элементы их не видят.
Основываясь на этом написал кучу кода.
Только что закончил, протестировал и оказалось, что два блока с относительным позиционированием друг друга то видят.
Потому отступы, которые я задавал, работают неправильно. Т.е. второй блок отступает не от верхнего левого края родительского блока, а от блока перед ним.
Подскажите решение, чтобы минимально курочить код.

Заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2015, 17:52
Ответы с готовыми решениями:

Как наложить блоки друг на друга?
Т.е. вот например: <style> div { border: 1px solid black; border-radius: 10px; } </style>

Как сделать так, чтобы 2 сервера друг друга видели
всем привет, уважаемые форумчане! ситуация такова: ранее 2 сервера стояли в одном офисе. где-то...

Как сделать чтобы подсети под управлением NAT видели друг друга?
Добрый день. Есть 3 филиала с ip адресами: 1. 10.105.54.12 2. 10.105.195.1 3. 10.105.233.1...

как настроить чтобы два компа друг друга видели
мне маршутизатор устоновили d-link dir300 , блин ковырялся в сетевом окружении ,пробовал...

23
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 17:55 2
Если правильно понял суть проблемы, то у родителя:

CSS
1
position:absolute;
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:12  [ТС] 3
А как это поможет?

Обьясню еще раз на примере.

Вот набросал аналогичный код, чтобы было понятно:
HTML5
1
2
3
4
<div id="parent">
    <div id="block1"></div>
    <div id="block2"></div>
</div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#parent{
height:450px;
width:450px;
border: 1px solid #000;
 
}
 
#block1, #block2{
position:relative;
float:left;
}
 
#block1{
height:150px;
width:150px;
}
 
#block2{
height:150px;
width:450px;
top:150px;
}
Ожидалось (как выяснилось, ожидалось по глупости):

Как сделать чтобы блоки не видели друг друга?


На деле:

Как сделать чтобы блоки не видели друг друга?


(Сетка и нумерация ячеек 150х150 лишь для наглядности размеров)
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 18:16 4
Ожидался первый вариант или второй?

У меня ваш код выводит на экран, как на первом изображении.
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:21  [ТС] 5
ожидалось как на первом фото

в результате работает как второе фото

проверил, вот результат:
Как сделать чтобы блоки не видели друг друга?


то есть второй блок отступает от первого, а я планировал, что будет отступать от родителя
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 18:22 6
Вот тут результат. Как на первом фото. Браузер Опера.
0
152 / 151 / 67
Регистрация: 25.02.2015
Сообщений: 493
17.12.2015, 18:31 7
Glart, ну дык ты top:150px убрал))
Silhouette, Вообще я не понял зачем тут позиционирование? Идти друг за другом это естественное поведение блочных элементов. Не задвай никакого позиционирования и они будут идти друг за дружкой. И зачем float:left если нужно чтоб они не занимали пространство рядом?
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:34  [ТС] 8
хром и фаерфокс отображают как на моем скрине

Добавлено через 1 минуту
Karssen, скрипт генерирует блоки по заданным параметрам
придется все переделывать под абсолютное позиционирование
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 18:36 9
Цитата Сообщение от Karssen Посмотреть сообщение
ну дык ты top:150px убрал))
Я скопировал код с этого поста .
0
152 / 151 / 67
Регистрация: 25.02.2015
Сообщений: 493
17.12.2015, 18:39 10
Glart, тогда магия ) потому что в посте
CSS
1
2
3
4
5
#block2{
height:150px;
width:450px;
top:150px;
}
А в вашем примере
CSS
1
2
3
4
#block2{
height:150px;
width:450px;
}
Добавлено через 1 минуту
Silhouette, Зачем вы здесь используете позиционирование, если вам нужно чтоб блоки шли друг за другом? Или приведите конечный вариант того что нужно. Потому для того что на картинке не нужно никакое позиционирование
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 18:44 11
Тогда вариант.

Добавлено через 50 секунд
CSS
1
float:left;
Можно вернуть.
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:44  [ТС] 12
Karssen, на вход скрипта подается массив, в котором указаны номера ячеек, которые должен занимать блок (на фото выше есть сетка)

например 1,2 и 6,9 должно отрисоваться в
Как сделать чтобы блоки не видели друг друга?
Миниатюры
Как сделать чтобы блоки не видели друг друга?  
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:46  [ТС] 13
второе изображение случайно прикрепил
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 18:47 14
Цитата Сообщение от Silhouette Посмотреть сообщение
например 1,2 и 6,9 должно отрисоваться в
В таком случае float:left; лучше вообще убрать. И мой пример будет работать. Только еще left отступ указывать.
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:48  [ТС] 15
Glart, это будет работать только если родительский блок расположен вверху страницы
у меня он посреди страницы
то есть либо переносить его вверх (что проще)
либо переделывать все отступы с учетом позиционирования родительского блока
0
152 / 151 / 67
Регистрация: 25.02.2015
Сообщений: 493
17.12.2015, 18:50 16
Лучший ответ Сообщение было отмечено Silhouette как решение

Решение

Silhouette, Интересная задача. Тогда тут есть 2 варианта решения. Самый кроссбраузерный это конечно позиционирование. Но в вашем случае выглядеть это должно так приблизительно
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#parent{
height:450px;
width:450px;
border: 1px solid #000;
position:relative;
}
 
[id*=block]{
border:1px solid red;
position:absolute;
}
 
#block1{
height:150px;
width:150px;
}
 
#block2{
height:150px;
width:450px;
top:150px;
}
Можно еще сделать на flex. Но это посложнее будет
1
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:51  [ТС] 17
в общем, перенес блок в начало страницы
в течении минуты переделал, работает как мне нужно
хоть php-код не нужно трогать

спасибо за помощь
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 18:51 18
Еще вариант. Не с верху страницы (тот же самый, но с отступом)
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 31
17.12.2015, 18:53  [ТС] 19
Glart, в этом случае у меня дочерние блоки отступают от верхнего края и располагаются вне родителя
0
В поисках себя
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
17.12.2015, 18:54 20
Цитата Сообщение от Silhouette Посмотреть сообщение
отступают от верхнего края и располагаются вне родителя
Я не понимаю... У меня что ли браузер особенный?
0
17.12.2015, 18:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2015, 18:54
Помогаю со студенческими работами здесь

Как соединить два канал интернета чтобы они видели друг друга?(Компьютеров)
У меня на предприятии есть 2 белые IP интернета, на один из них установлено все наше локалные сеть...

Как в PHP отделить элементы друг от друга, чтобы не ругались друг на друга?
&lt;?php $chitat = fopen('yoo.txt', 'r'); if (!$chitat) { echo 'Ошибка при открытии файла...

Как сделать чтобы 3 круга не находили друг на друга
if button=mbright then with Image1.Canvas do begin pen.Mode:=pmMask; ...

Как сделать, чтобы объекты не наезжали друг на друга?
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &lt;windows.h&gt; #include &lt;glut.h&gt; float px =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru