У меня есть веб-приложение для боулинга, которое позволяет вводить довольно подробную информацию по кадрам. Одна вещь, которую он позволяет, - это отслеживать, какие кегли были сбиты на каждом шаре. Чтобы отобразить эту информацию, я делаю ее похожей на стойку с выводами:
o o o o o o o o o o
Изображения используются для обозначения контактов. Итак, для заднего ряда у меня есть 4 тега img, затем тег br. Отлично работает ... в основном. Проблема в небольших браузерах, таких как IEMobile. В этом случае, когда в таблице может быть 10 или 11 столбцов, и в каждом столбце может быть стойка с выводами, IE попытается уменьшить размер столбца, чтобы он поместился на экране, и я получаю что-то вроде этого :
o o o o o o o o o o
или же
o o o o o o o o o o
Состав такой:
<tr>
<td>
<!-- some whitespace -->
<div class = "..."><img .../><img .../><img .../><img .../><br/>...</div>
<!-- some whitespace -->
</td>
</tr>
Внутри внутреннего div нет пробелов. Если вы посмотрите на эта страница в обычном браузере, он должен отображаться нормально. Если вы посмотрите на это в IEMobile, это не так.
Есть подсказки или предложения? Может быть какая-то & nbsp; что на самом деле не добавляет пробела?
Я получил и попробовал несколько хороших предложений, в том числе:
опускает голову и что-то бормочет
Да, верно, прозрачный gif в верхней части div, размер которого соответствует нужной мне ширине. Конечный код (упрощенный) выглядит так:
<table class = "game">
<tr class = "analysis leave">
<!-- ... -->
<td> <div class = "smallpins"><img class = "spacer" src = "http://seasrc.th.net/gif/cleardot.gif" /><br/><img src = "/img/pinsmall.gif"/><img src = "/img/nopinsmall.gif"/><img src = "/img/nopinsmall.gif"/><img src = "/img/nopinsmall.gif"/><br/><img src = "/img/pinsmall.gif"/><img src = "/img/pinsmall.gif"/><img src = "/img/nopinsmall.gif"/><br/><img src = "/img/nopinsmall.gif"/><img src = "/img/nopinsmall.gif"/><br/><img src = "/img/nopinsmall.gif"/></div> </td>
<!-- ... -->
</tr>
</table>
И CSS:
div.smallpins {
background: url(/img/lane.gif) repeat;
text-align: center;
padding:0;
white-space: nowrap;
}
div.smallpins img {
width:1em;
height:1em;
}
div.smallpins img.spacer {
width:4.5em;
height:0px;
}
table.game tr.leave td{
padding:0;
margin:0;
}
table.game tr.leave .smallpins {
min-width:4em;
white-space: nowrap;
background: none;
}
p.s. Нет, я не буду ссылаться на чью-то четкую точку в своем окончательном решении :)






Почему бы не создать изображение для всех возможных результатов для булавок? Никаких проблем с макетами для браузеров изображение - это изображение
Создавайте их на лету, кэшируя созданные изображения для повторного использования.
2 ^ 10 = 1024 изображения? Это много, но управляемо. Пропускная способность, возможно, вызывает беспокойство, особенно на мобильных устройствах.
Действительно было бы. Их 10! возможные комбинации, хотя некоторые из них технически невозможны. На самом деле, это было бы больше, потому что другое изображение используется, если запасной, а не пропущенный.
Вам может понадобиться фактический пробел сразу после точки с запятой в .
Раньше я обходил этот тип проблемы, динамически создавая все изображение (с соответствующим расположением контактов) как единое изображение. Если вы используете ASP.NET, это довольно просто сделать с помощью вызовов GDI. Вы просто динамически создаете изображение с размещением булавки, а затем подаете на страницу как одно изображение. Устраняет все проблемы с выравниванием (каламбур).
Это построено с использованием GAE, и меня беспокоит использование квоты процессора ... Я полагаю, я мог бы кэшировать каждое изображение после генерации ... Что-то, о чем нужно подумать
Так как вы все равно используете изображения, почему бы не сгенерировать изображение, представляющее весь макет на лету? Вы можете использовать что-то вроде GD или ImageMagick, чтобы добиться цели.
Попробуйте использовать тег <div> в той же строке, что и <td>...</td>.
Возможно, я неправильно понял, что вам нужно, но я думаю, что вы можете сделать то, что сделал я для логотипов на карте.
Отрисовывается фоновая плитка карты, затем каждому изображению предлагается плавно перемещаться влево и дается несколько интересных полей, чтобы они располагались так, как я хочу (просмотрите исходный код, чтобы увидеть, как это делается).
Я не думаю, что это поможет мне сделать столбец достаточно широким, чтобы отображать все 4 изображения ... не так ли? Я попробую
О, чтобы он оставался достаточно широким, вам нужно, чтобы родительский div имел ... style = "width: Xpx;", что заставит его иметь определенную ширину.
Не будет ли проще, если вы сделаете это так?
<div id = "container">
<div id = "row1">
<img/><img/><img/><img/>
</div>
<div id = "row2">
<img/><img/><img/>
</div>
<div id = "row3">
<img/><img/>
</div>
<div id = "row4">
<img/>
</div>
</div>
Каким образом ваш CSS будет обрабатывать выравнивание?
.container div{
text-align:center;
}
Но помешает ли это браузеру вставить разрыв строки внутри одного из div?
Вы можете попробовать опцию css "nowrap" в содержащем div.
{white-space: nowrap;}
Не уверен, насколько широко это поддерживается.
Согласно Qurksmode, он поддерживается всеми браузерами, кроме IE 5 quirksmode.org/css/whitespace.html.
Пометить это как принятое, с оговоркой, что это не работает для IEMobile :(
есть опечатка, его следует читать: {white-space: nowrap} (без тире)
Что будет иметь наибольший смысл, так это изменить, какое изображение будет отображаться на лету:
<div id = "pin-images">
<img src = "fivepins.jpg" />
<img src = "fourpins.jpg" />
<img src = "threepins.jpg" />
<img src = "twopins.jpg" />
<img src = "onepin.jpg" />
</div>
Добавьте "nowrap" в свой тег td ...
Используйте символ соединения слов, U + 2060 (т. Е. ⁠).
Он вставляет квадратный символ в эмулятор WM 6.1, который я использую.
Возможно, это всего лишь один случай, когда вы могли бы использовать таблицы для обеспечения макета. Это не оптимально, и я знаю, что вы не должны использовать таблицы для вещей, которые не являются табличными, но вы можете сделать что-то вроде этого.
<table>
<tr>
<td><img src = "Pin.jpg"></td>
<td> </td>
<td><img src = "Pin.jpg"></td>
<td> ></td>
<td><img src = "Pin.jpg"></td>
<td> </td>
<td><img src = "Pin.jpg"></td>
</tr>
<tr>
<td> </td>
<td><img src = "Pin.jpg"></td>
<td> </td>
<td><img src = "Pin.jpg"></td>
<td> </td>
<td><img src = "Pin.jpg"></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><img src = "Pin.jpg"></td>
<td> </td>
<td><img src = "Pin.jpg"></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><img src = "Pin.jpg"></td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
Используйте таблицу - тогда у вас есть две проблемы :-) Этот подход заставляет пространство между изображениями быть таким же широким, как сами изображения, что, вероятно, не то, что он хочет.
Поскольку вы стремитесь к максимальной совместимости, рассматривали ли вы возможность создания одного изображения, представляющего фрейм?
Если вы используете PHP, вы можете использовать GD для динамического создания изображений, представляющих фреймы, на основе того же ввода, который вы использовали бы для создания HTML в вашем вопросе. Самым большим преимуществом этого является то, что любой браузер, который может отображать PNG или GIF, сможет отображать ваш фрейм.
Вы пробовали определить ширину столбца? Как <td width = "123px"> или <td style = "width:123px">. А может еще и для div?
да, они оба имеют ширину: 4em, минимальную ширину: 4em. Для каждого изображения задана максимальная ширина: 1em; размер их.
Вы можете заменить img на span и использовать фоновое изображение для каждого диапазона, в зависимости от класса css:
<p class = "..."><span class = "pin"></span><span> </span><span class = "pin"></span>...
<p class = "..."><span class = "pin"></span><span> </span><span class = "pin"></span>...
<p class = "..."><span class = "pin"></span><span> </span><span class = "pin"></span>...
<p class = "..."><span class = "pin"></span><span> </span><span class = "pin"></span>...
(лично я думаю, что лучше иметь 4 строки с тегом p вместо одного div с br)
В CSS у вас может быть что-то вроде этого:
p.smallpins {
margin: 0;
padding: 0;
height: 11px;
font-size: 1px;
}
p.smallpins span {
width: 11px;
background-image: url(nopinsmall.gif);
background-repeat: ...
background-position: ...
}
p.smallpins span.pin {
background-image: url(pinsmall.gif);
}
Это хороший подход, но он не ухудшается изящно, если, например, у пользователя отключен CSS.
Имейте отдельные изображения для каждого возможного расположения каждой строки.
Для этого потребуется всего 30 изображений (16 + 8 + 4 + 2)
На самом деле для каждой кегли возможны 3 состояния - сбит на первом шаре, сбит на втором шаре и не сбит. Это увеличивает количество изображений, которые нужно предварительно рассчитать, на хороший бит.
Это было здесь какое-то время, но я просто просматривал это и нашел этот пост. Что бы я ни делал, я не мог заставить изображения идти подряд. Что бы ни случилось, они бы завернули. Все перепробовала.
Затем я понял, что на клиенте есть настройка, в которой они могут выбрать вид: 1) Один столбец, 2) Вид рабочего стола и 3) Подогнать окно. Согласно MSDN, значение по умолчанию должно соответствовать окну. Но мобильный телефон IE моей жены по умолчанию работал с одним столбцом. ТАК НЕ ВАЖНО ЧТО, все будет заключено в один столбец. Если я переключился на любой из двух других вариантов, все выглядело нормально.
Ну, вы можете установить это с помощью метатега:
<meta name = "MobileOptimized" content = "320">
установит ширину страницы 320 пикселей. Не знаю, как заставить его перейти в автоматический режим, если кто-нибудь знает, напишите, пожалуйста.
Это НЕ работает на Blackberry до версии 4.6 - вы застряли с одним столбцом, если пользователь вручную не перейдет в режим рабочего стола. С 4.6 или новее должно работать следующее, но я не тестировал:
<meta name = "viewport" content = "width=320">
Замечательно, спасибо большое. Для поддержки iPhone / iPod touch я сейчас использую этот параметр: <meta name = "viewport" content = "width = device-width">. Знаете ли вы, есть ли другой способ заставить ежевику действовать правильно? Если нет, я могу оставить свое текущее решение, что должно быть нормально.
Глядя на страницу, можно увидеть много изображений.