Reputation: 51
Question:
I have div boxes lined side by side with arrows pointing. I want to write content above the arrow using html css. How can I do that?
#border {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borders {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borderss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#bordersss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
.arrow {
font-size: 105px;
color: red;
width:115%
}
<div id="border"></div><span class="arrow">→</span>
<div id="borders"></div>
<span class="arrow">→</span>
<div id="borderss"></div>
<span class="arrow">→</span>
<div id="bordersss">
</div>
Codepen link: https://codepen.io/acqafqe/pen/yLEJgVv
Upvotes: 0
Views: 419
Reputation: 19797
You'd be better off moving the "Arrow" to CSS and just keeping your text in HTML.
#main-content {
display: flex;
flex-direction: row;
align-items: center;
padding-top: 50px;
}
.border {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borders {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borderss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
.bordersss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
.seperator {
display: flex;
flex-direction: column;
align-items: center;
height: 80px;
padding-top: 20px;
}
.seperator::after {
content: "\2192";
display: inline-block;
font-size: 105px;
color: red;
width: 100px;
margin-top: -60px;
}
<div id="main-content">
<div class="border"></div>
<div class="seperator">
<span>text</span>
</div>
<div class="border"></div>
<div class="seperator">
<span>text</span>
</div>
<div class="border"></div>
<div class="seperator">
<span>text</span>
</div>
<div class="border">
</div>
</div>
Upvotes: 0
Reputation: 36
I did it adding flex-layout and some additional styles:
Presentation
#main-content {
display: flex;
flex-direction: row;
align-items: center;
}
#border {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borders {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borderss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#bordersss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
.arrow {
font-size: 105px;
color: red;
width:100px;
margin-top: -60px;
}
.arrow-flex {
display: flex;
flex-direction: column;
align-items: center;
padding-top: 50px;
}
<div id="main-content">
<div id="border"></div>
<div class="arrow-flex">
<span>text</span>
<span class="arrow">→</span>
</div>
<div id="borders"></div>
<div class="arrow-flex">
<span>text</span>
<span class="arrow">→</span>
</div>
<div id="borderss"></div>
<div class="arrow-flex">
<span>text</span>
<span class="arrow">→</span>
</div>
<div id="bordersss">
</div>
</div>
Upvotes: 2
Reputation: 43
You can use flexbox and play with them:
#border {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borders {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borderss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#bordersss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
.arrow {
font-size: 105px;
color: red;
width:115%
}
.arrowTitle {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
#wrapper{
display: flex;
align-items: center;
}
<div id='wrapper'>
<div class="arrowTitle">
<span>title1</span>
<span class="arrow">→</span>
</div>
<div id="borders"></div>
<div class="arrowTitle">
<span>title2</span>
<span class="arrow">→</span>
</div>
<div id="borderss"></div>
<div class="arrowTitle">
<span>title3</span>
<span class="arrow">→</span>
</div>
<div id="bordersss">
</div>
</div>
If you're not familiar with flexbox you can check here.
Upvotes: 2
Reputation: 551
You can set a :before
attribute to .arrow
selector.
https://developer.mozilla.org/en-US/docs/Web/CSS/::before
#border {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borders {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#borderss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
#bordersss {
height: 80px;
width: 10%;
border: 1px black solid;
display: inline-block;
}
.arrow {
font-size: 105px;
color: red;
width:115%;
position: relative;
}
.arrow:before {
content: 'test';
font-size: 14px;
position: absolute;
top: 20%;
}
<div id="border"></div><span class="arrow">→</span>
<div id="borders"></div>
<span class="arrow">→</span>
<div id="borderss"></div>
<span class="arrow">→</span>
<div id="bordersss">
</div>
Upvotes: 1