Вернуть элементу стиль, по-умолчанию заданный браузером
Например в таком случае
<style> textarea { background-color : #fff; } </style> <textarea></textarea> <textarea disabled="disabled"></textarea> при таких стилях неактивный textarea становится слабоотличим от активного Возможно ли как-то не меняя исходные стили, привести неактивный textarea в его вид по-умолчанию Пока есть только такие идеи: 1) создать фрейм без подключенных стилей, и узнать из него как по-умолчанию выглядит textarea, а затем динамически присвоить нужный фон(или создать правило в стилях) 2) пробежаться по всем таблицам стилей, в поисках подходящих селекторов, временно отключить их правила, после проверить стили textarea, и вернуть обратно отключенные стили Но мне эти решения не кажутся удачными, особенно второе, поэтому ищу другие пути решения |
Стандартное оформление не вернется, если только 2й варинат… А почему бы изначально не использовать селектор
textarea:not([disabled]) , или такой возможности нет? |
Цитата:
|
<style> textarea { background-color : #F0F0F0; } textarea[disabled="disabled"]{ background:none; } </style> <textarea></textarea> <textarea disabled="disabled"></textarea> |
Deff,
Вы не совсем поняли Задача не в том, чтобы задать неактивному textarea красный, серый или любой другой конкретно заданный фон Задача в том, чтобы задать ему тот фон, который принят в данном браузере по-умолчанию для него В разных браузерах этот фон разный, и хотелось бы естественного отображения, несмотря на жестко заданный стиль |
Цитата:
|
Gvozd,
Воть (помню, что делал |
Цитата:
|
Цитата:
перебирать все styleSheet-ы, и их cssRule я оставил на крайний случае |
Цитата:
Пришли в голову два варианта потом посмотрел ваш первый пост и понял что вам тоже они пришли в голову. мне первый вариант нравиться. |
стоп а скриптом можно добраться к таблице стилей браузера? может есть какойто объект или свойства у каждого браузера свои?
|
Цитата:
теги <center> редко кто красит |
Цитата:
document.styleSheets[0].cssRules//набор правил из первой подключенной таблицы(в Chrome) Цитата:
|
Цитата:
как цвет <center>-а мне поможет определить цвет дефолтного textarea? |
Gvozd,
По идее - в pop-up без стиля закинуть воть и дефолтный цвет |
Gvozd,
Цитата:
|
Цитата:
поэтому этот способ - крайний |
Gvozd,
подложить под textarea копию того-го ж размера закинутого в пустой фрейм (адрес не выставляем, т.е фрейм не загружается, стиля нет) - у текущего же - делаем begrond прозрачный |
Цитата:
И этот вариант схож, но хуже вариант №1 который я привел в начале темы - просто получить из фрейма нужные стили . хотелось бы еще что-то, кроме описанных мною вариантов |
Gvozd,
Создать заранее таблицу дефолтных стилей с чистой страницы для востребованных элементов со всех браузов - думаю потянет кило на 4 загружать её как внешний скрипт c перемнной vаr |
Gvozd,
Не уверен что сработает, но например, скриптом мочим все теги link и style предварительно скопировав кудато их урлы/содержимое, создаём нужный тег (находить уже существующий не стоит так как может быть атрибут style) берём его стили, удаляем тег, и дописываем их всем нужным тегам в атрибут style, восстанавливаем теги link и style. Возможные проблемы придётся убирать important в свойствах нужного селектора в существующих стилях, так как перебьют атрибут style, если речь об универсальном решении. Также при добавлении исходных стилей в атрибут style возможно придётся изменять значения существующих при совпадениях. можно как вариант дописать в тег style а не в атрибут. |
Gvozd,
взять исходники браузеров, дописать нужный тебе функционал, закомитить это.. а те браузеры где нет исходников, обратится к разрабам, попросить что нужно то и то.. вот такой блин расклад :D |
В принципе в Опере - Мозилле - при установке элементов на чистую страницу - все стили в консоли есть - в опере мон их даж удобно копировать, далее по данным табличке атрибутов и тегов распарсить в оставшихся браузах скриптом и создать сводную таблу (Отламинировать как бейджик и продавать в переходах метро
На обратной стороне рекламу чудодейственного средства (щас за такое доплачивают .. |
Вообще непонятна ситуация "нельзя менять". Если userJS то навскидку только фрейм. Если таки можно доисать что-то в код но категорически нельзя трогать css, то можно подключить скриптик который выяснит нужные цвета до подключения css файла.)
...upd Пришло в голову: конкретно по теме решение таково))): <!DOCTYPE HTML> <html> <head> <style>input,textarea{background:#00f;width:100%}</style> <script> (function(){ var i = document.createElement('input'); i.type = 'radio'; i.disabled = true; var color = window.getComputedStyle(i, null).backgroundColor; document.write('<style>textarea[disabled],input[disabled]{background:' + color + '}</style>') }()) </script> </head> <body> <textarea disabled>textarea</textarea> <input type="text" value="text input" disabled> </body> </html> |
Вы название темы читаете? Стандартное оформление никак не вернуть, хоть все свойства перекопируй, оформление контролов не станет, как до изменения стилей, соответствующим интерфейсу ОС.
|
Цитата:
Цитата:
Простейший вариант: <!DOCTYPE HTML> <html> <head> <style> body {background:#000;text-align:center;font-size:100px;} input {background:#aad;border:1px solid black} </style> <script> function simple(){ var s = document.styleSheets[0], r = s.cssRules, i = r.length; while(i--)if(~r[i].selectorText.indexOf('input')){ if(r[i].selectorText === 'input') s.deleteRule(i); //для полноценной работы сюда надо дописать пару регулярок } } </script> </head> <body> <input type="button" value="to default" onclick="simple()"> </body> </html> |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Плагины/темы не имеют возможности модифицировать его Только писать свои скрипты и стили до и после основных скриптов и стилей админки Цитата:
Но все-таки интересны общие решения, когда все стили уже отработали. Наверно в таком случае лучшим остается вариант с чистым Iframe Цитата:
color-пустая строка К тому же давать стили похожих элементов - не очень хорошая мысль. Они могут отличатся, и к тому же запрашиваемые элементы уже могут быть также стилизованы |
Цитата:
Но в принципе вы правы. Например такой пример будет работать некорректно в Opera: <!DOCTYPE HTML> <html> <head> </head> <body> <textarea>textarea</textarea> <textarea disabled>textarea</textarea> <script> var color1 = window.getComputedStyle(document.getElementsByTagName('textarea')[0], null).backgroundColor; var color2 = window.getComputedStyle(document.getElementsByTagName('textarea')[1], null).backgroundColor; console.log(color1, color2); </script> <style> body { background-color : yellow; } textarea { background-color : red; } </style> <script> var color_new1 = window.getComputedStyle(document.getElementsByTagName('textarea')[0], null).backgroundColor; var color_new2 = window.getComputedStyle(document.getElementsByTagName('textarea')[1], null).backgroundColor; console.log(color_new1, color_new2); document.getElementsByTagName('textarea')[0].style.backgroundColor = color1; document.getElementsByTagName('textarea')[1].style.backgroundColor = color2; color_new1 = window.getComputedStyle(document.getElementsByTagName('textarea')[0], null).backgroundColor; color_new2 = window.getComputedStyle(document.getElementsByTagName('textarea')[1], null).backgroundColor; console.log(color_new1, color_new2); </script> </body> </html> Вывод в консоль: Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 13:30. |