12

I am using below css to align text middle and left when multi-line, but how to align text middle and center when one line?

.my-text {
    border: 1px solid black;
    width: 400px;
    height: 160px;
    vertical-align: middle;
    display: table-cell;
    overflow: hidden;
    line-height: 20px;
    padding: 20px;
}
<div class="my-text">
    carpe diem
</div>
<div class="my-text">
    carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem
</div>
licaomeng
  • 919
  • 2
  • 13
  • 27

2 Answers2

22
  1. Wrap your text in an inline element like <span>.
  2. Make it inline-block and set its text alignment to left.

.my-text {
  border: 1px solid black;
  width: 400px;
  height: 160px;
  vertical-align: middle;
  display: table-cell;
  overflow: hidden;
  line-height: 20px;
  text-align: center;
  padding: 10px;
}

.my-text span {
  display: inline-block;
  vertical-align: top;
  text-align: left;
}
<div class="my-text">
  <span>carpe diem</span>
</div>

<div class="my-text">
  <span>carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem carpe diem</span>
</div>
Mohammad Usman
  • 37,952
  • 20
  • 92
  • 95
  • 1
    When I searched this question on google, I was so unsure if this is possible. And here it is. Wow! I don't understand it unfortunately, but it works. Thanks – Ardeshir Izadi Feb 13 '23 at 10:47
-4

I'd recommend using a JQuery solution:

$(".my-text").keypress(function() {
   if($(this).val().length >= 50) {
      $(this).css("text-align", "left");
   }
   else {
     $(this).css("text-align", "center");
   }
});

There may be better alternatives as this one is obviously not waterproof, but it should do the trick somewhat.

Xariez
  • 759
  • 7
  • 24
  • `length >= 50` is highly dependent on screen size, font-size, letter-spacing, font-characteristics, user's zoom settings, accessibility settings, and probably many other things. Lots of changes may break this – Ardeshir Izadi Feb 13 '23 at 10:45