float + nowrap
Стоит задача: вытянуть содержимое .crossbar в одну строку, при этом таким образом, чтобы элемент .image был выровнен по правому краю.
Сделал следующий пример, иллюстрирующий проблему: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" > <title>Float right wrap test</title> <style type="text/css"> .content { border: 1px solid #ccc; border-collapse: collapse; } .content td { padding: 0; } .crossbar { overflow: hidden !important; width: 300px; padding: 1px 0; line-height: 17px; -o-text-overflow: ellipsis; text-overflow: ellipsis; white-space: nowrap; } .wrap { white-space: normal; } .grey { color: #777; } .image { float: right; overflow: hidden; width:16px; height: 16px; margin: 0 3px 0 10px; background-color: red; } </style> <script type="text/javascript"> function toggle_wrap() { var el = document.getElementById('to-toggle-wrap'); if (-1 == el.className.indexOf('wrap')) { el.className += ' wrap'; } else { el.className = (' ' + el.className + ' ').replace(/ wrap /g, ''); } } </script> </head> <body> <button onclick="toggle_wrap()">Toggle Wrap</button> <table class="content"> <tbody> <tr> <td><div id="to-toggle-wrap" class="crossbar"><div class="image"></div>Short text<span class="grey"> This is additional looooong text. Long text is looooooooooong and no-wrapped</span></div></td> </tr> </tbody> </table> </body> </html> 1. Если переместить .image в конец td, то он переносится под текст. 2. Из набора IE, FF, Opera только IE8 делает то, что нужно (черт!) 3. Как видно из примера, снятие word-wrap и выставление для .crossbar жесткой высоты проблему решает, но хочется найти решение с резиновой высотой. Может, у кого-то будут мысли на этот счет? |
Цитата:
Может я чё-то не понял). .crossbar { width:0px; overflow: hidden !important; padding: 1px 0; line-height: 17px; -o-text-overflow: ellipsis; text-overflow: ellipsis; white-space: nowrap; } <td><div id="to-toggle-wrap" class="crossbar"></div>Short text<span class="grey"> This is additional looooong text. Long text is looooooooooong and no-wrapped.This is additional looooong text. Long text is looooooooooong and no-wrapped.</span><div class="image"></div></td> |
Видимо не поняли, потому что .crossbar обернут вокруг содержимого, а Вы его в начало вынесли :) Ну и первый пункт тут как замечание, он ни к селу ни к городу. Main target -- это добиться отстутствия переноса при наличии nowrap.
|
Часовой пояс GMT +3, время: 20:19. |