당신은 그렇게 할 의사를 사용하고, 단순히 음의 여백으로 triangle
를 이동할 수 있습니다.
또한 overflow: hidden
을 triangle
으로 옮겼습니다. 테두리가 겹치지 않습니다.
참고,이 샘플 두꺼운 테두리를 사용, 그래서 당신은 의사 가능한 것보다 더 많은 일을하려는 경우 하나는 쉽게이
.container {
border: 5px solid gray;
position: relative;
width: 50vw;
height: 80px;
background: #fff;
}
.triangle {
display: inline-block;
height: calc(100% + 10px); /* 10px = border size * 2 */
margin: -5px 0 0 -5px; /* move element left/top = border size */
width: 100%;
overflow: hidden;
}
.triangle::before {
content: attr(data-text);
display: inline-block;
background-color: red;
transform: translateX(-50%) rotate(45deg) translateX(50%) rotate(-90deg);
transform-origin: center top;
box-shadow: 0px -50px 0px 50px red;
}
<div class="container">
<div class="triangle" data-text="How ?"></div>
</div>
<br>
<div class="container">
<div class="triangle" data-text="How are you ?"></div>
</div>
작동 볼 수 있습니다 물론 여기에 a 요소를 추가 할 수 있습니다. span
이 샘플에서는 음수 여백 대신 상대 위치를 사용했습니다. sh 아야 또 다른 방법.
.container {
border: 5px solid gray;
position: relative;
width: 50vw;
height: 80px;
background: #fff;
}
.triangle {
display: inline-block;
position: relative;
left: -5px; /* move element left = border size */
top: -5px; /* move element top = border size */
height: calc(100% + 10px); /* 10px = border size * 2 */
width: 100%;
overflow: hidden;
}
.triangle span {
display: inline-block;
background-color: red;
transform: translateX(-50%) rotate(45deg) translateX(50%) rotate(-90deg);
transform-origin: center top;
box-shadow: 0px -50px 0px 50px red;
}
<div class="container">
<div class="triangle">
<span>How ?</span>
</div>
</div>
<br>
<div class="container">
<div class="triangle">
<span>How are you ?</span>
</div>
</div>
또한
사용 상자 그림자 내가 부트 스트랩 요소를 사용하고 내가 가진 모든 요소를 무시하지 않을 국경 https://jsfiddle.net/L811uzey/1/ –
을 그릴 수 테두리. 국경을 가진 해결책? –
감사합니다. @GCyrillus, 여기 테두리와 문제가있는 부트 스트랩이 있습니다. https://jsfiddle.net/6Lagdk4z/ (Chrome에서 열기). –