Meta
Eventualmente, quero obter algo assim (esqueça a borda branca em torno disso devido ao recorte):
Restrições
Esses elementos devem estar dentro da seguinte marcação, que não posso alterar facilmente:
<div style="position:absolute;top:15px;right:15px;bottom:15px;left:15px">
<div style="display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%;">
<div style="position:relative;-webkit-flex:1;-ms-flex:1;flex:1;width:100%;height:100%;">
<div style="position:absolute;top:0;left:0;right:0;bottom:0;">
<!-- place elements here -->
</div>
</div>
</div>
</div>
O que eu tentei
<div class="split-container">
<div class="split-heading">
<h3>Heading</h3>
</div>
<div class="split-content">
<p>Content</p>
</div>
</div>
.split-container {
display: flex;
height: 100%;
}
.split-heading {
background-color: rgb(198,89,17);
color: #fff;
padding: 0 5px; /* Add padding to the sides */
}
.split-heading > h3 {
transform: rotate(-90deg);
transform-origin: bottom right;
}
.split-content {
flex-grow: 100;
background-color: rgb(244,176,132);
color: #fff;
}
Resultado
https://codepen.io/thothal/pen/qBwxEKO
Problemas
- O div do título deve ocupar apenas o espaço necessário (está muito amplo no momento)
- O título deve ser centralizado vertical e horizontalmente
- O conteúdo deve ser centralizado verticalmente
Se você alterar seu css para:
Basicamente: adicione exibição flexível aos elementos com align-items: center, para que você possa centralizar os elementos no div verticalmente.
Solução:
writing-mode
propriedade css para exibir o texto verticalmente e, em seguida, girá-lo 180 graus para virá-lo. Em seguida, definamargin
como0px
(porque<h3>
as tags já possuem uma margem).display: flex
,align-items: center
àsplit-heading
classe para centralizá-la.display: flex
,align-items: center
àsplit-content
classe para centralizá-la.Você fez muito bem !
e se você adicionar este código em suas aulas, está feito:
e isto :
Usando
writing-mode: tb-rl
->Você só precisa fornecer
.split-heading
&.split-content
edisplay: flex;
usaralign-items: center;
para centralizar verticalmente seu conteúdo. Você pode usarjustify-content: center;
para centralizar horizontalmente oh3
interior.split-heading
e removertransform-origin: bottom right;