Rotated HTML Text-Inputs with CSS Flexbox
Rotated HTML Text-Inputs with CSS Flexbox
There are labels on my web page that are arranged by the following pattern:
The main container content
contains rows
. A row has two labels
in it and a single label
contains three columns
. Each column
can contain one or more input["text"]
elements.
content
rows
labels
label
columns
column
input["text"]
input
width: 100%;
resize: vertical;
text-align: center;
font-family: Arial, Helvetica, sans-serif;
border: none;
background-color: transparent;
color: black;
outline: none;
font-weight: bold;
transition: ease-in-out, width .35s ease-in-out;
input:hover, input:focus
background-color: #baffc9;
border-radius: 3px;
.label-row
height: 3.0cm;
width: 18.8cm;
display: flex;
flex-direction: row;
flex-grow: 0;
flex-wrap: nowrap;
.label
border: 1px dashed black;
width: 9.4cm;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
.col-left
width: 4.4cm;
.col-middle
width: 1.0cm;
border-left: 1px dotted black;
border-right: 1px dotted black;
.col-right
width: 4.0cm;
/* ----- column-left ----- */
.hsig-wrapper
flex-direction: column;
justify-content: space-evenly;
.hl
font-size: 10px;
flex: 0 1 auto;
.sk
font-size: 18px;
flex: 0 1 auto;
.format
font-size: 18px;
flex: 0 1 auto;
.hsig
font-size: 18px;
flex: 0 1 auto;
.sig_add
font-size: 10px;
flex: 0 1 auto;
/* ----- column-middle ----- */
.loc-wrapper
background-color: transparent;
width: 100%;
height: 100%;
display: flex;
text-align: center;
justify-content: center;
align-items: center;
.loc
font-size: 20px;
width: 2.9cm;
height: 0.9cm;
-moz-transform:rotate(-90deg);
-webkit-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
/* ----- column-right ----- */
.as-wrapper
width: 100%;
height: 100%;
display: flex;
text-align: center;
justify-content: center;
flex-direction: row;
align-items: center;
/*flex-wrap: nowrap;*/
/*justify-content: space-evenly;*/
.as_detail
font-size: 18px;
width: 100%;
align-self: center;
flex: 0 1 auto;
width: 0.8cm;
/*height: 30%;*/
-moz-transform:rotate(-90deg);
-webkit-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
<div id="content">
<div class="label-row">
<div class="label">
<div class="col-left">
<div class="hsig-wrapper">
<input type="text" class="hl"
id="hl"
name="hl"
value="Headline">
<input type="text" class="format"
id="format"
name="format"
value="II">
<input type="text" class="hsig"
id="hsig"
name="hsig"
value="12 345">
<input type="text" class="sig_add"
id="sig_add"
name="sig_add"
value="Detail">
</div>
</div>
<div class="col-middle">
<div class="loc-wrapper">
<input type="text" class="loc"
id="loc"
name="loc"
value="ABC">
</div>
</div>
<div class="col-right">
<div class="as-wrapper">
<input type="text" class="as_detail"
id="as_detail_0"
name="as_detail_0"
value="1">
<input type="text" class="as_detail"
id="as_detail_1"
name="as_detail_1"
value="2">
<input type="text" class="as_detail"
id="as_detail_2"
name="as_detail_2"
value="3">
<input type="text" class="as_detail"
id="as_detail_3"
name="as_detail_3"
value="4">
</div>
</div>
</div>
</div>
</div>
On liveweave is almost the whole problem pictured.
The Problem:
justify-content: space-evenly;
Detail
loc
ABC
What can I do in these cases? Is my flexbox model to complicated or even built up totally wrong? Do you have an idea?
1 Answer
1
So I made the following changes to your code:
Made hsig-wrapper
a full-width flexbox and the first column is sorted out.
hsig-wrapper
Flex items shrink only as much as its content as min-width
is auto by default - so set min-width: 0
to as_detail
element.
min-width
min-width: 0
as_detail
See demo below:
input
width: 100%;
resize: vertical;
text-align: center;
font-family: Arial, Helvetica, sans-serif;
border: none;
background-color: transparent;
color: black;
outline: none;
font-weight: bold;
transition: ease-in-out, width .35s ease-in-out;
input:hover,
input:focus
background-color: #baffc9;
border-radius: 3px;
.label-row
height: 3.0cm;
width: 18.8cm;
display: flex;
flex-direction: row;
flex-grow: 0;
flex-wrap: nowrap;
.label
border: 1px dashed black;
width: 9.4cm;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
.col-left
width: 4.4cm;
.col-middle
width: 1.0cm;
border-left: 1px dotted black;
border-right: 1px dotted black;
.col-right
width: 4.0cm;
/* ----- column-left ----- */
.hsig-wrapper
display: flex; /* ADDED */
height: 100%; /* ADDED */
flex-direction: column;
justify-content: space-evenly;
.hl
font-size: 10px;
flex: 0 1 auto;
.sk
font-size: 18px;
flex: 0 1 auto;
.format
font-size: 18px;
flex: 0 1 auto;
.hsig
font-size: 18px;
flex: 0 1 auto;
.sig_add
font-size: 10px;
flex: 0 1 auto;
/* ----- column-middle ----- */
.loc-wrapper
background-color: transparent;
width: 100%;
height: 100%;
display: flex;
text-align: center;
justify-content: center;
align-items: center;
.loc
font-size: 20px;
width: 2.9cm;
height: 0.9cm;
-moz-transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
/* ----- column-right ----- */
.as-wrapper
width: 100%;
height: 100%;
display: flex;
text-align: center;
justify-content: center;
flex-direction: row;
align-items: center;
/*flex-wrap: nowrap;*/
/*justify-content: space-evenly;*/
.as_detail
font-size: 18px;
width: 100%;
align-self: center;
flex: 0 1 auto;
width: 0.8cm;
/*height: 30%;*/
min-width: 0; /* ADDED */
-moz-transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
<div id="content">
<div class="label-row">
<div class="label">
<div class="col-left">
<div class="hsig-wrapper">
<input type="text" class="hl" id="hl" name="hl" value="Headline">
<input type="text" class="format" id="format" name="format" value="II">
<input type="text" class="hsig" id="hsig" name="hsig" value="12 345">
<input type="text" class="sig_add" id="sig_add" name="sig_add" value="Detail">
</div>
</div>
<div class="col-middle">
<div class="loc-wrapper">
<input type="text" class="loc" id="loc" name="loc" value="ABC">
</div>
</div>
<div class="col-right">
<div class="as-wrapper">
<input type="text" class="as_detail" id="as_detail_0" name="as_detail_0" value="1">
<input type="text" class="as_detail" id="as_detail_1" name="as_detail_1" value="2">
<input type="text" class="as_detail" id="as_detail_2" name="as_detail_2" value="3">
<input type="text" class="as_detail" id="as_detail_3" name="as_detail_3" value="4">
</div>
</div>
</div>
</div>
</div>
col-left
col-right
as_detail
Hand-1.2
tried using wrappers for the
as-detail
input boxes - codepen.io/anon/pen/RYYqYX– kukkuz
Sep 17 '18 at 3:31
as-detail
that's it, exactly :) many thanks!
– Chris
Sep 17 '18 at 10:53
you are welcome :)
– kukkuz
Sep 17 '18 at 10:54
Thanks for contributing an answer to Stack Overflow!
But avoid …
To learn more, see our tips on writing great answers.
Required, but never shown
Required, but never shown
By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy
wow, it looks great :) thanks! That's exactly how I wanted to do
col-left
and almost what I had in mind forcol-right
: the text-alignment is perfect; do you have any ideas if values ofas_detail
will be longer than 1 digit, e.g.Hand-1.2
?– Chris
Sep 16 '18 at 20:02