2012-06-23 3 views
2

Это моя первая попытка сделать полный макет веб-страницы в измерениях «em». Я создаю редактор предварительного просмотра в реальном времени.Текстовая область с em, не работающая в IE и Opera

Эта страница отлично работает в Firefox и Chrome, но в IE (у меня IE9) и Opera (обновляется вчера вечером). Текстовая область значительно увеличивает границы. В Opera граница текстовой области также не показывает закругленные углы. (Текстовая область показывает закругленный угол, но не его границы)

Это CSS для текстового поля

#pad { 
    background-color:#BBBB99; 
    background-image:url("../img/edit.png"); 
    border-color:rgba(32, 32, 52, 0.39); 
    border-radius:1em 1em 1em 1em; 
    font-size:1.3em; 
    height:33.3em; 
    margin:0.3em; 
    outline:medium none; 
    padding:0.9em 0.7em; 
    resize:none; 
    width:26em; 
    text-align: left; 

} 

и это фрагмент кода HTML

<div class='container'> 
    <div id='left'> 
    <textarea id = 'pad' wrap="on" ></textarea> 
    </div> 

    <div id='right'> 
    <div id='preview'></div> 
    </div> 
</div> 

Я установил «шрифта: 100% ' в организме. Here is the link of demo if you need to check it.

+0

Является одной из проблем этого проекта, чтобы полностью создать страницу в измерениях 'em' или вы хотите использовать'% '? Я лично установил бы ширину в процентах (например, '90%') вместо фиксированного измерения 'em'. –

+0

Я попробую его в процентах. Благодарю. Я могу использовать%, я пытаюсь научиться создавать макеты жидкостей на веб-страницах. Раньше я использовал px на этой веб-странице, но div # right переместился на мой квадрат-квадратик моих друзей. Именно тогда я решил изменить свою технику. –

ответ

4

Я думаю, что проблема вызвана изменением размера шрифта в #pad.

Когда вы устанавливаете базовый размер шрифта, например 18px, тогда все дочерние элементы обрабатывают 1em как 18px. Однако, если изменить размер шрифта в одном из детей 1.2em то все дочерние элементы, вложенные в пределах этого ребенка будет начать лечение 1em в 22px:

body { 
    font-size: 18px; 
} 

.parent { 
    font-size: 1em; /* 18px */ 
} 

.child { 
    font-size: 1.2em /* 22px */ 
} 

.child > .child { 
    font-size: 1em; /* 22px */ 
} 

То, что я думаю, что происходит в Internet Explorer является то, что размер шрифта изменяется на 1.2em до width из #pad. Таким образом, ширина в Firefox и Chrome равна 26 * 18px, где, как и в IE, ширина равна 26 * 22px.

Чтобы обойти это, я бы установил ширину в процентах вместо фиксированного измерения em.

Редактировать

В отношении вопроса закругленных углов в Opera; кажется, что Opera не любезно относится к тому, что не установлены ни border-width, ни border-style.

Попробуйте изменить border-color на номер border: 1px solid rgba(32, 32, 52, 0.39); и посмотреть, не решена ли эта проблема.

+0

Структура dom - контейнер body (div) -> left (div) -> pad (textarea) '. В Body я устанавливаю 'font-size: 100%'. в контейнере и в div-left нет изменения шрифта. то я сделал изменение шрифта в textarea. Я изменил padding, margin, div-left и pad на% и установил ширину и высоту до 95% в пэде. Тем не менее тот же результат в опере и IE. Когда я устанавливаю% в текстовом поле, означает ли это, что это 95% родительского div, то есть 95% div-left? –

+0

Редактировать для просмотра предыдущего комментария. Мне потребовалось некоторое время, чтобы понять, что опера берётся из кеша. поэтому после изменений, упомянутых выше, (высота: 95%, ширина: 95%); Ширина была скорректирована, как и должно быть, но теперь во всех браузерах высота уменьшается до значения по умолчанию для textarea, которое не растет, поскольку я включил переполнение. Я пробовал использовать 'min-height: 95%; max-height: 96% 'no effect. Теперь этот эффект во всех четырех браузерах. –

+0

@AbhinavKulshreshtha Вы можете использовать высоту только в процентах, когда родительский элемент имеет фиксированную высоту. Таким образом, вы можете либо установить высоту в '.wysiwym-editor' на' 33.3em', либо сохранить высоту в '# pad' как измерение' em' и признать, что она будет выше в IE (не совсем так, как он все равно будет содержаться в родительском элементе). –

0

для специальных функций CSS3, использовать префиксы для каждого браузера:
вместо border-radius:1em 1em 1em 1em; использования:

-webkit-border-radius:1em; 
-moz-border-radius:1em; 
-o-border-radius:1em; 
-ms-border-radius:1em; 
border-radius:1em; 
+2

Nope. [Браузеры поддерживали] (http://caniuse.com/border-radius) стандартное свойство 'border-radius' уже давно. В вашем ответе нет необходимости * любых * свойств префикса поставщика. Что еще более важно, ваш ответ не устранит проблему, описанную в вопросе. – thirtydot

+1

Nop .. все еще не работает.Странно, что текстовая область показывает закругленный угол, но ее граница остается прямо в опере. Я думал, что это всегда IE, который вызывает проблему –

+0

@thirtydot: что, если пользователь с ff3 посещает сайт? не будут ли округлые границы для него важны? –