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

Задать ширину блоку

03.07.2016, 04:43. Показов 3105. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Пытаюсь двумя способами (через float-left и box-sizing: border-box) сделать колонки из блоков, каждый из которых должен быть по размеру равным 1/3 от ширины родителя. Проблема в синем блоке, если устанавливаю ему ширину width: calc(100%/3), он исчезает, в противном случае (если не задавать ширину), он обтекает зеленый блок, но его ширина больше, чем 1/3 от родителя, что не верно. Подскажите, пожалуйста, в чем ошибка? Также визуально по этим двум способам блоки почему то получаются немного разными по высоте и ширине
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Стили текста и оформления</title>
</head>
<body>
    <div>
               <div class="ex1">
            <div class="cols variant1">
                <div class="red"></div>
                <div class="green"></div>
                <div class="blue"></div>
            </div>
            <div class="cols variant2">
                <div class="red"></div>
                <div class="green"></div>
                <div class="blue"></div>
            </div>
        </div>
</body>
</html>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 html {
            font-family: helvetica, sans-serif;
            font-size: 62.5%;
            font-weight: 400;
            font-style: normal;
        }
        .container {
            position: relative;
            padding: 30px 40px;
        }
        .red {
            background: red;
        }
        .green {
            background: green;
        }
        .blue {
            background: blue;
        }
 
        .ex1 {
            margin-bottom: 100px;
        }
        .ex1 .cols {
            margin-bottom: 50px;
        }
        .ex1 .cols > div {
            min-height: 100px;
        }
        .ex1 .variant1 .red {
            float: left;
            overflow: hidden;
            width: calc(100%/3);
            border: 5px solid;
 
        }
         .ex1 .variant1 .green {
            float: left;
            overflow: hidden;
            width: calc(100%/3);
            border: 5px solid;
 
        }
        .ex1 .variant1 .blue {
            border: 5px solid;
            /*width: calc(100%/3);*/
            width: calc(100%-200%/3);
 
 
        }
         .ex1 .variant2 .red {
            float: left;
            width: calc(100%/3);
            box-sizing: border-box;
            border: 5px solid;
        }
        .ex1 .variant2 .green {
            float: left;
            width: calc(100%/3);
            box-sizing: border-box;
            border: 5px solid;
        }
        .ex1 .variant2 .blue {
            border: 5px solid;
            /*width: calc(100%/3);*/
            width: calc(100%-200%/3);
            box-sizing: border-box;
        }
http://codepen.io/Slipa_AA/pen/QEgLWL
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2016, 04:43
Ответы с готовыми решениями:

Как задать блоку условие, что бы он не влиял на общую ширину сайта
Как задать блоку условие, что бы он не влиял на общую ширину сайта и не являлся причиной появления...

Задать бэкграунд блоку
Здравствуйте, дорогие форкмчане! У меня состоялся спор с коллегой по поводу background-image. ...

Блоку под слайдером задать высоту и позиционирование
Всем привет) начал делать свой сайт компьютерной помощи, столкнулся с кучей проблем,т.к. делаю...

Задать полупрозрачный фон блоку не затрагивая текста в нем
У меня проблема, создал div задал ему background и в css прописал &quot;opacity: 0.5;&quot; дело в том что, в...

5
68 / 14 / 7
Регистрация: 17.10.2015
Сообщений: 53
03.07.2016, 09:04 2
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
      .red {
          background: red;
      }
      .green {
          background: green;
      }
      .blue {
          background: blue;
      }
 
      .cols > div {
          min-height: 100px;
          float: left;
          overflow: hidden;
          width: calc(100%/3);
          border: 5px solid;
          box-sizing: border-box;
      }
0
Эксперт JSЭксперт HTML/CSS
3825 / 2675 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
03.07.2016, 10:34 3
Вариант без флоатов:
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.wrapper{
  font-size:0;
}
.wrapper > div{
  height:100px;  
  width:33.33%;  
  display:inline-block;
  font-size:16px;
  border:4px solid black;
  box-sizing: border-box;
}
 
.block1, .block4{background:red;}
.block2, .block5{background:green;}
.block3, .block6{background:blue;}
HTML5
1
2
3
4
5
6
7
8
<div class="wrapper">
  <div class="block1"></div>
  <div class="block2"></div>
  <div class="block3"></div>
  <div class="block4"></div>
  <div class="block5"></div>
  <div class="block6"></div>
</div>
Результат

Добавлено через 12 минут
На opera mini и ie8, сверстанное с calc, распадется. caniuse:calc
0
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 7
03.07.2016, 14:04  [ТС] 4
Спасибо! Если все-таки пробовать верстать и при помощи float, получается, что блоки, сверстанные обеими способами (float и box-sizing) разные по ширине, хотя всем блокам задается ширина 33.33% и firebug показывает одинаковое число пикселей, но даже визуально видно, что они разные и во вкладке Макет другое число высоты и ширины (из-за этого и синий блок сваливается вниз, т.к. места ему не хватает). Для блока variant2 задаем высоту, но по firebug она меньше, это тоже визуально видно. Посмотрите, пожалуйста, в чем проблема с шириной и как по float сделать ее в 33.33%
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
.variant1 {
            overflow: hidden;
 
        }
        .variant1 .red {
            height:100px;  
            width:33.33%;  
            display:inline-block;
            font-size:16px;
            border:5px solid black;
            float: left;
            
        }
        .variant1 .green {
            height:100px;  
            width:33.33%;  
            display:inline-block;
            font-size:16px;
            border:5px solid black;
            float: left;
            
        }
        .variant1 .blue {
            height:100px;  
            width:33.33%;  
            display:inline-block;
            font-size:16px;
            border:5px solid black;
            
            
        }
        .ex1 .variant1 {
            margin-bottom: -100px;
        }
        .variant2 {
            font-size:0;
        }
        .variant2 > div {
            height:100px;  
            width:33.33%;  
            font-size:16px;
            border:5px solid black;
            box-sizing: border-box;
            display:inline-block;
        }
0
Эксперт JSЭксперт HTML/CSS
3825 / 2675 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
03.07.2016, 14:31 5
Вот на флоатах, без calc
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
.wrapper{
  overflow: hidden;
}
.wrapper > div{
  box-sizing: border-box;
  border:1px solid black;
  width:33.33%;
  height:50px;
  float:left;
}
.block1, .block4{background:red;}
.block2, .block5{background:green;}
.block3, .block6{background:blue;}
HTML5
1
2
3
4
5
6
7
8
<div class="wrapper">
  <div class="block1"></div>
  <div class="block2"></div>
  <div class="block3"></div>
  <div class="block4"></div>
  <div class="block5"></div>
  <div class="block6"></div>
</div>
Результат

Добавлено через 8 минут
У вас много повторяющегося в коде. Это так надо, обучения ради? Большую часть можно сократить

Добавлено через 8 минут
По вашему примеру.
убираем:
CSS
1
2
3
 .ex1 .variant1 {
            margin-bottom: -100px;
        }
Добавляем:
CSS
1
2
3
4
5
6
*{
    box-sizing: border-box;
}
.variant2 {
    overflow: hidden;
}
Если не используете inline-block, тогда делать нулевой размер шрифта не нужно.
И почитайте про box-sizing. Мне кажется, вы не совсем правильно понимаете этот стиль.
1
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 7
03.07.2016, 14:44  [ТС] 6
Спасибо! Казалось, что float:left должен был сразу определять ширину 33,33%, без box-sizing, сейчас понятно, что из-за border float правильно не сработает. Еще раз спасибо!
0
03.07.2016, 14:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2016, 14:44
Помогаю со студенческими работами здесь

Задать ширину input
Допустим у меня есть &lt;select id=&quot;day&quot;&gt; &lt;select id=&quot;month&quot;&gt; &lt;select id=&quot;year&quot;&gt; Хочу...

Задать ширину списка
Есть ли возможность определить ширину списка так, чтобы помещался самый широкий из LI-элементов, но...

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

Задать секциям одинаковую ширину
Создал 1 строку с 3 ячейками. Потом, решил добавить ещё одну строку только с одной ячейкой и, новая...


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

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