#css #line
#css #строка
Вопрос:
У меня есть горизонтальные линии, созданные с помощью CSS в <div>
элементах, теперь я хочу соединить их другой линией (нарисованной от руки), есть идеи? Изображение того, что я делаю ниже:
.canvas {
top: 1px;
left: 1px;
background-color: #CCC;
width: 1000px;
height: 1000px;
}
.top-line {
top: 100px;
left: 256px;
position: absolute;
border-top: 1px solid #000;
height: 1px;
width: 488px;
}
.bottom-line {
top: 900px;
left: 100px;
position: absolute;
border-top: 1px solid #000;
height: 1px;
width: 800px;
}
<div class="canvas">
<div class="top-line"></div>
<div class="left-line"></div>
<div class="right-line"></div>
<div class="bottom-line"></div>
</div>
Комментарии:
1. Обязательно ли делать строки 4 разными разделителями? вы могли бы добавить границу к контейнеру и
transform: skew()
к нему.2. Открыты ли вы для решений, которые включают Javascript, или вы ищете чисто CSS-решение для этого?
3. используйте ячейку таблицы с rowspan, которая представляет собой количество строк между верхней строкой и нижней строкой, затем поместите туда gif с изображением строки соответствующей высоты / ширины
Ответ №1:
Вы можете рассмотреть один элемент и некоторые преобразования, чтобы визуально достичь желаемого:
.box {
width:300px;
height:200px;
border:1px solid;
border-right:none; /*remove this if you want the right line too*/
transform:perspective(30px) rotateX(5deg);
transform-origin:bottom center;
}
body {
background:pink;
}
<div class="box">
</div>
Еще одна идея, рассматривающая косое преобразование:
.box {
width:300px;
height:200px;
border-bottom:1px solid;
position:relative;
}
.box:before,
.box:after {
content:"";
position:absolute;
top:0;
height:100%;
width:50%;
border-top:1px solid;
}
.box:before {
border-left:1px solid;
transform-origin:bottom left;
left:0;
transform:skew(-10deg);
}
.box:after {
/*border-right:1px solid; add this for the right line */
transform-origin:bottom right;
right:0;
transform:skew(10deg);
}
body {
background:pink;
}
<div class="box">
</div>
Ответ №2:
Я пишу некоторые CSS для left-line
приведенного ниже фрагмента кода, надеюсь, это поможет вам. Спасибо
.left-line {
border-left: 1px solid #000;
height: 815px;
position: relative;
left: 161px;
transform: rotate(11deg);
top: 181px;
}
.canvas {
top: 1px;
left: 1px;
background-color: #CCC;
width: 1000px;
height: 1000px;
}
.top-line {
top: 100px;
left: 256px;
position: absolute;
border-top: 1px solid #000;
height: 1px;
width: 488px;
}
.bottom-line {
top: 900px;
left: 100px;
position: absolute;
border-top: 1px solid #000;
height: 1px;
width: 800px;
}
.left-line {
border-left: 1px solid #000;
height: 815px;
position: relative;
left: 161px;
transform: rotate(11deg);
top: 181px;
}
<div class="canvas">
<div class="top-line"></div>
<div class="left-line"></div>
<div class="right-line"></div>
<div class="bottom-line"></div>
</div>