CSS, два гибких поля переменной ширины, каждое занимает 50%, если долго

0

У меня есть несколько строк адреса электронной почты и имени. Я хотел бы показать как можно больше контента. Итак, если у меня короткое имя, укажите больше адреса электронной почты, и если у меня будет короткое письмо, укажите другое имя. Если имя и адрес электронной почты длинны, я бы хотел, чтобы они занимали равное количество места. И для любого длинного, усеченного элемента я бы хотел, чтобы они закончили с многоточием.

Есть ли способ сохранить эти требования, не прибегая к Javascript? Я бы предпочел не использовать макеты flexbox (недостаточно поддержки браузера), но я был бы открыт для этого. Кроме того, все это одна строка; без упаковки.

------------- -------------------------------------
| This is a long name...| This is a long email... |
------------- -------------------------------------

|<------------------100% width ------------------>|


<div class='result'>
  <div class='textHolder'>
   <h3>Name</h3>
   <h4>Email</h4>
  </div>
</div>
  • 1
    Элементы H3 и h4 кажутся здесь семантически неуместными. Заголовки должны быть для заголовков разделов контента. Может быть, таблица или список определений будет более уместным?
  • 0
    Это хороший момент, @cimmanon, спасибо. Я упустил это.
Показать ещё 2 комментария
Теги:
layout

2 ответа

1

Без javascript единственным решением, которое, как я думаю, будет работать, является max-width 50% для каждого и text-overflow с помощью многоточия (...) при переполнении текста...

Единственная проблема заключается в том, что, например, имя очень маленькое, если письмо очень велико, оно будет занимать только 50% от полной ширины.

Я сделал эту скрипку: http://jsfiddle.net/N36tY/

(также я согласен с cimmanon, используйте другие теги)

Пример HTML:

<div class='result'>
    <div class='textHolder'>
         <h3>Name</h3>

         <h4>Email</h4>

        <div class="clear"></div>
         <h3>Name and more text, etc and even more to make it overflow</h3>

         <h4>Email</h4>

        <div class="clear"></div>
         <h3>Name and more text, etc and even more to make it overflow</h3>

         <h4>Email and a lot of text and more and even more to make it overflow</h4>

        <div class="clear"></div>
         <h3>Small name</h3>

         <h4>Email and a lot of text and more and even more to make it overflow</h4>

    </div>
</div>

CSS:

.textHolder {
    width: 100%;
}
h3 {
    background: blue;
    color: #FFF;
}
h4 {
    background: green;
    color: #FFF;
}
h3, h4 {
    margin: 0;
    padding: 0;
    font-size: 14px;
    font-weight: normal;
    display: block;
    float: left;
    min-width: 10px;
    max-width: 50%;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
}
.clear {
    clear: both;
}
1

@Newtang Я обновил JSFiddle до ваших требований. Когда вы расширяете и сокращаете страницу, если ширина страницы слишком мала, появятся эллипсы.

Здесь ссылка http://jsfiddle.net/6gFN9/1/

.textHolder {
    width: 100%;
}
h3, h4 {
    float: left;
    max-width: 50%;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню