Как я могу получить изображения, размещенные слева от других элементов списка определений?

#html #css

#HTML #css

Вопрос:

Как я могу получить эти dd изображения, размещенные рядом с dt и другими dd элементами в dl ?

Вот что я хотел бы:

скриншот

Вот JSFiddle, а вот разметка:

 <dl>
  <dt>Bacon ipsum</dt>
  <dd class="img"><img src="http://placekitten.com/100/100" width="100" height="100" /></dd>
  <dd>Bacon ipsum dolor sit amet pork chop magna pork, tempor in jowl ham labore rump tenderloin pariatur pancetta tri-tip pork loin. Spare ribs meatloaf ground round chicken, non esse cow. </dd>
  <dt>Irure Jowl</dt>
  <dd class="img"><img src="http://placekitten.com/101/100" width="100" height="100" /></dd>
  <dd>Irure jowl non, chicken dolor veniam id in shoulder voluptate. Eu fugiat jowl, sunt drumstick id ad shankle shank aliquip bresaola aliqua reprehenderit. Fugiat shank pariatur strip steak laborum pork chop. Beef ribs aliquip fugiat, shankle id pork loin.  </dd>
  <dt>Biltong labore turkey</dt>
  <dd class="img"><img src="http://placekitten.com/100/1002" width="100" height="100" /></dd>
  <dd>Biltong labore turkey swine dolor short ribs minim. Fugiat beef consectetur, sirloin do ham meatloaf hamburger pariatur jowl swine ham hock.</dd>
</dl>
  

И CSS:

 dt
  { margin: .75em 0 .25em 0;
    font-weight: bold;
    }

dd
  { margin: .25em 0;
    }

dd.img
  { margin: 0 .25em 0 0;
    }

img
  { border: solid #666666 1px;
    padding: 3px;
    }
  

Если я просто перемещаю изображения влево, они dt находятся над изображением; но тогда я не могу переместить dt в правильное положение.

Какой самый чистый и семантичный способ сделать этот тип макета?

Комментарии:

1. Откуда взялся скриншот?

2. Используйте таблицы! …. Нет, я просто шучу.

3. Можете ли вы изменить структуру HTML?

4. Я не смог удержаться от использования baconipsum.com либо. Я сделал снимок экрана; в основном в Photoshop. Да, я могу изменить HTML; Я, безусловно, ищу самое удобное решение в целом.

5. Существует также корпоративный Ipsum (если вы используете OSX): doubleforte.net/widgets/corporate

Ответ №1:

Обновлено
http://jsfiddle.net/PkwaP /

 /* only showing the additions */
body { min-width: 400px; } /* change to appropriate value */
dt { clear: left; margin-left: 116px; }
dd { margin-left: 116px; }
img { float: left; margin-top: -1.25em; margin-right: 10px; }
  

добавлено поле слева в dd, чтобы избежать переноса текста на изображение. добавление минимальной ширины к телу в большинстве случаев позволит избежать переноса на dt.

Я не могу больше тратить время на этот вопрос сегодня вечером. Если это не будет решено, я попробую еще раз разобраться с этим утром.

Удачи

Комментарии:

1. Ближе, чем sandeep, хотя все еще не точно соответствует изображению OP.

2. @Мэтт, под «точно» мы имеем в виду мелкие типографские детали, или мое позиционирование неверно? @thirtydot, о, возможно, именно это имел в виду Мэтт.

3. @thirtydot, кто помещает <br> внутри <dt> ?

4. @Мэтт, перенос текста — это действительная проблема. Тем не менее, я думаю, справедливо отметить, что скрипка @thirtydot включала <br> в свой <dt>

5. @matchew: Я пытался подчеркнуть, что если у вас есть длинный заголовок, который занимает две строки (или заголовок с разрывом строки), изображение перемещается вниз вместо того, чтобы оставаться наверху. Возможно, это не проблема, если все заголовки будут короткими, но кто знает?

Ответ №2:

После некоторой борьбы с огромным отвлекающим маневром, которым был ваш HTML..

Я решил забыть об использовании dl . Я экспериментировал с этим (много), но не смог придумать ничего, что посчитал бы приемлемым. Итак, я изменил на ul .

Смотрите: http://jsfiddle.net/8xPRZ/1 /

HTML:

 <ul>
    <li>
        <img src="http://placekitten.com/100/100" width="100" height="100" />
        <h4>Bacon ipsum</h4>
        <p>Bacon ipsum dolor sit amet pork chop magna pork,  tempor in jowl ham labore rump tenderloin pariatur pancetta tri-tip pork  loin. Spare ribs meatloaf ground round chicken, non esse cow.</p>
    </li>

    ..
</ul>
  

CSS:

 li {
    margin: 0 0 .5em 0;
    overflow: hidden;
}
li > img {
    border: solid #666 1px;
    padding: 3px;
    float: left
}
li > h4, li > p {
    overflow: hidden;
    display: block;
    padding: 0 0 0 .5em
}
li > h4 {
    font-weight: bold;
    margin: 0 0 .5em 0
}
  

Комментарии:

1. Я бы использовал <p> вместо <span> , но это в значительной степени то, чем закончилась моя попытка.

2. @mu слишком короткое: я бы тоже Я обновил свой ответ, спасибо. Я потратил слишком много времени на просмотр этого.

3. Вы могли бы создать какое-нибудь ужасающее чудовище с абсолютным позиционированием и оригиналом <dl> , если бы захотели. Некоторые вариации на этот счет: jsfiddle.net/ambiguous/SmFcs/4 (Нет, я не рассматриваю это как ответ, я чувствую себя достаточно грязным только от того, что мне пришла в голову эта идея).

4. @mu слишком короткое: я рассматривал это, но отклонил по причине, которую я указал @matchew: jsfiddle.net/SmFcs/5

5. @thirtydot, 1 это работает хорошо, но я думаю, что окончательные ответы сводятся к тому, должно ли это быть <dl> или <ul>, а без содержимого выбор становится неупорядоченным списком. Еще раз спасибо за вклад в мой ответ, я полагаю, что у меня есть рабочий ответ, но я всегда готов к критике.