Как согласовать пункты Pill и вообще улучшить мой код?

Mendes спросил: 26 декабря 2017 в 07:42 в: html

Я создаю свой собственный компонент Pill с помощью HTML:

.panel1 {
  width: 100%;
}

.panel2 {
  width: 100px;
}

.pill {
  display: inline-block;
}

.pill-content {
  display: flex;
  flex-direction: row;
  font-size: 12px;
  vertical-align: middle;
  padding: 0px;
  background-color: white;
  border: solid;
  border-width: 1px;
  border-radius: 4px;
  color: black;
  border-color: blue;
  background-color: white;
}

.pill-text {
  flex: 1;
}

.pill-icon {
  flex: 1;
  max-width: 18px;
  padding: 0px 5px 0px 5px;
}

<div class="panel1">
  <div class="pill">
    <div class="pill-content">
      <div class="pill-text">
        Why is that text breaking as it fits in width?
      </div>
      <div class="pill-icon">
        X
      </div>
    </div>
  </div>
</div>
<div class="panel2">
  <div class="pill">
    <div class="pill-content">
      <div class="pill-text">
        Test
      </div>
      <div class="pill-icon">
        X
      </div>
    </div>
  </div>
  <div class="pill">
    <div class="pill-content">
      <div class="pill-text">
        Very big text that does not fit in width
      </div>
      <div class="pill-icon">
        X
      </div>
    </div>
  </div>
  <div>
  </div>

My Проблемы:

  1. Мне нужно всегда позиционировать текст в левой части таблицы.

  2. Мне нужно сохранить значок закрытия (Я использую X здесь, но это будет значок шрифта awesome), всегда вертикально центрированный.

  3. Я не могу понять, почему мой текст нарушение panel1. Я ожидал, что текст сломается только тогда, когда размер панели будет меньше, чем текст +.

Могу ли я сделать этот HTML / CSS проще?

JSFiddle здесь


0 ответов