То, что я пытаюсь здесь сделать, это иметь какое-то содержание, в данном случае слово «НЕТ» (размер шрифта, конечно, достаточно большой для этой идеи) и окружить его цитатой Мастера Йоды в качестве своего рода «границы».
#boxContent {
font-size: 55px;
font-weight: normal;
}
body {
text-align: center;
font-size: 10px;
font-weight: bold;
}
#bodyFormat {
margin: 100px;
padding: 10px;
background-color: salmon;
width: 250px;
height: 125px;
}
.boxSides {
display: inline-block;
border: solid 2px darkGreen;
/*height: 100px*/
}
#LeftBorder {
transform: rotate(-90deg);
/*margin: 40px 0 0 0;*/
}
#RightBorder {
transform: rotate(90deg);
/*margin: -80px 0 0 100px;*/
}
#bottomBorder {
transform: rotate(180deg);
}<div id=bodyFormat>
<!--Close Box top-->
<div>DO OR DO NOT</div>
<!--Close Box left side-->
<span class = "boxSides" id = "LeftBorder">BE WITH YOU</span>
<!--Inside Box-->
<span id = "boxContent">NO</span>
<!--Close Box right side-->
<span class = "boxSides" id = "RightBorder">MAY THE FORCE</span>
<!--Close Box bottom-->
<div id = "bottomBorder">THERE IS NO TRY</div>
</div>
```Это самое близкое, что у меня есть, но вы можете догадаться, что оно недостаточно близко.
Вот так это выглядит (если интересно, то да вырезано)
Я бы хотел, чтобы он был очень плотным, похожим на границу, более или менее в этом размере (размер шрифта)
Я уже пробовал менять свойства с <span> на <div> и <p> с изменением отображения с блочного, inline-flex/grid/block туда и обратно. Точно так же, как изменение значений отступов и полей вперед и назад. Каждое другое созвездие приводило меня к чему-то вроде этого:
Выглядит неплохо, но пока не то, что хочется.
В поиске нашел только это: Как создать границу с текстом
И этот ответ: https://codepen.io/mrigankvallabh/pen/LYNYoMq
Но, во-первых, я не очень понимаю, что происходит в коде (если кому-то не терпится, не стесняйтесь объяснять :) А во-вторых, те части, которые я понимаю, показывают мне, что это решение этой конкретной проблемы. Наличие рамки вокруг бумаги, ориентированной скорее снаружи, чем внутри.
Я также читал о наборе полей и легенде, а также о абсолютном перемещении текстовых блоков на границу с изменяющимся фоном, но не вижу подхода, который заставит это работать, поскольку вокруг содержимого не должно быть линии.
И другое (не столь важное, но все же). Я написал сплошную границу для сторон из любопытства, потому что фон (#bodyFormat - лосось), кажется, растягивается так же широко, как и текст до преобразования (поворота), если вы понимаете, о чем я. Но похоже, что рамка вокруг текста границы сформирована вокруг содержимого, не занимающего пространство вращения. Изменение полей или ширины просто снова перемешивает все. (Для ширины она изменяется ровно на 218 пикселей, если вам тоже интересно). Как убрать излишки фона?
Большое спасибо за упражнение! Так что сделать это сейчас не получилось. Пройдусь по упражнению и повторю.






Я смог добиться того, что вы собираетесь сделать, используя сетку CSS для макета и обернув стороны тегами p с position: absolute и установив родительское положение: относительный, чтобы отвязать ширину родительского элемента от длины текста. Я также установил много вещей для отображения: flex, чтобы упростить центрирование контента, и изменил все промежутки на div для согласованности.
Исходная схема сетки: В таких ситуациях часто бывает полезно использовать цветовую маркировку, чтобы было понятнее, что происходит. Эта проблема полностью решаема без использования сетки, но я считаю, что ее легче осмыслить.
Вот наглядное изображение того, почему я обернул боковой текст тегами p: Как видите, весь блок div вращается, отбрасывая макет сетки.
Поэтому вместо этого мы делаем их дочерними элементами p, позиционируем их абсолютно, позиционируем родителей относительно, поворачиваем и вуаля:
(Я также должен отметить, что в этот момент я немного изменил макет сетки, чтобы верх и низ располагались только по центру, а левый и правый - на полную высоту, но идея та же.)
Теперь нам просто нужно изменить размер div bodyFormat по вкусу и повозиться с левым и правым расстояниями элементов p, и все должно стать на свои места:
Я также должен отметить, что я изменил некоторые размеры шрифта, чтобы сделать все достаточно большим, чтобы с ним можно было работать, и помочь ему лучше сочетаться друг с другом, но не стесняйтесь настраивать все эти числа, пока они не будут выглядеть так, как вы хотите. Конструкция должна держаться. Я оставил цветовую кодировку закомментированной, что должно помочь в этом.
#boxContent {
font-size: 150px;
font-weight: normal;
/* background-color: green; */
grid-column: 2;
grid-row: 2;
display: flex;
align-items: center;
height: .75em;
}
body {
text-align: center;
font-size: 20px;
font-weight: bold;
}
#bodyFormat {
padding: 10px;
background-color: salmon;
width: 13em;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr;
}
.boxSides {
display: flex;
align-items: center;
position: relative;
}
#LeftBorder {
grid-column: 1;
grid-row: 1 / 4;
/* background-color: blue; */
}
#LeftBorder p {
transform: rotate(-90deg);
/* background: white; */
position: absolute;
width: 9em;
left: -4em;
}
#RightBorder p {
transform: rotate(90deg);
/* background: white; */
position: absolute;
width: 9em;
right: -4em;
}
#RightBorder {
grid-column: 3;
grid-row: 1 / 4;
/* background-color: red; */
}
.topBorder {
grid-column: 2;
grid-row: 1;
/* background-color: orange; */
}
#bottomBorder {
grid-column: 2;
grid-row: 3;
/* background-color: yellow; */
}<div id=bodyFormat>
<!--Close Box top-->
<div class = "topBorder">DO OR DO NOT</div>
<!--Close Box left side-->
<div class = "boxSides" id = "LeftBorder"><p>BE WITH YOU</p></div>
<!--Inside Box-->
<div id = "boxContent">NO</div>
<!--Close Box right side-->
<div class = "boxSides" id = "RightBorder"><p>MAY THE FORCE</p></div>
<!--Close Box bottom-->
<div id = "bottomBorder">THERE IS NO TRY</div>
</div>Говорить спасибо в комментариях сейчас плохо? В любом случае, вы помогли мне дважды, у вас есть решение, включающее небольшую лекцию и заставляющее меня читать о сетках, так что спасибо^3 и хорошего дня/вечера/ночи.
Без проблем! Не знаю, что об этом думают власть имущие, но я ценю это, ха-ха. Так же!
Чего вам не хватает, так это того, что
#bodyFormatдолжен бытьposition: relativeродителем, а элементы границы должны бытьposition: absoluteдочерними элементами. Выложенная вами ручка показывает, как с этим справиться. Ознакомьтесь с MDN: позиционирование...