Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.03.2014, 01:22
Аспирант
Отправить личное сообщение для BratKilla Посмотреть профиль Найти все сообщения от BratKilla
 
Регистрация: 26.02.2014
Сообщений: 30

псевдоклассы и js
я так и не понял есть у js доступ к псевдоклассам css или нет? (библиотеками не пользуюсь)
Ответить с цитированием
  #2 (permalink)  
Старый 05.03.2014, 02:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

нету. хотя может уже че придумали. Но ты можешь создать таблицу стилей и управлять ее правилами. Таким образом можно изменять свойства для псевдоклассов и псевдоэлементов из js.
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 05.03.2014 в 02:32.
Ответить с цитированием
  #3 (permalink)  
Старый 05.03.2014, 02:59
Аспирант
Отправить личное сообщение для BratKilla Посмотреть профиль Найти все сообщения от BratKilla
 
Регистрация: 26.02.2014
Сообщений: 30

danik.js,
Вот, например, псевдокласс :hover, в два счёта можно заменить на js. Но я хочу через style элемента добраться до его свойства background. Как всё это выглядит? Не затрагивая тег <style> вообще, всё управление из js
Ответить с цитированием
  #4 (permalink)  
Старый 05.03.2014, 03:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ниче не понял. Это?
<style>
    div{
        background: blue;
        color: white;
    }
    div:hover{
        background: red;
    }
</style>

<div style="height:150px;"></div>

<script>
    var div = document.querySelector('div');
    setInterval(function() {
        div.textContent = getComputedStyle(div).backgroundColor;
    }, 100);
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 05.03.2014, 04:02
Аспирант
Отправить личное сообщение для BratKilla Посмотреть профиль Найти все сообщения от BratKilla
 
Регистрация: 26.02.2014
Сообщений: 30

danik.js,
Неее. Но на этом примере точно поймёшь. Пусть всё так останется, но при наведении на левую половину div, background в div:hover будет red, а при наведении на правую - black.

т.е. было:
div:hover{
background: red;
}

стало:
div:hover{
background: black;
}

но изменение значения только с помощью js.
Ответить с цитированием
  #6 (permalink)  
Старый 05.03.2014, 04:04
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Дык ты пиши сразу в style элемента. Причем тут псевдокласс?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 05.03.2014, 04:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<div style="height:150px;"></div>
 
<script>
    var div = document.querySelector('div');
    div.addEventListener('mousemove', function(event) {
        if (event.offsetX > div.offsetWidth / 2)
            div.style.backgroundColor = 'black';
        else
            div.style.backgroundColor = 'red';
    });
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 05.03.2014, 04:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<style>
    .bla{
        position: relative;
        height: 150px;
    }
    .half{
        width: 50%;
        height: 100%;
        position: absolute;
    }
    .left-half{
        left: 0;
    }
    .left-half:hover ~ .background{
        background: red;
    }
    .right-half{
        right: 0;
    }
    .right-half:hover ~ .background{
        background: black;
    }
    .background{
        height: 100%;
        background: blue;
    }
</style>
<div class="bla">
    <div class="half left-half"></div>
    <div class="half right-half"></div>
    <div class="background"></div>
</div>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 05.03.2014, 04:26
Аспирант
Отправить личное сообщение для BratKilla Посмотреть профиль Найти все сообщения от BratKilla
 
Регистрация: 26.02.2014
Сообщений: 30

danik.js,
это понятно, что можно и без псевдокласса обойтись.
:hover это же css событие. Вот я и думал что его как то применить в js можно. Что то вроде:

div.style.hover.backgroundColor = 'black';
Ответить с цитированием
  #10 (permalink)  
Старый 05.03.2014, 05:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BratKilla
:hover это же css событие
Это не событие. Это псевдокласс. Можешь себе представить что это просто класс, будто бы .hover, только браузер его как-бы сам добавляет при наведении на элемент мышки, и убирает когда уводишь. Ну и вместо одной точки - две точки. То есть разницы то практически нет.

Класс - это всего лишь способ задать стили элементу, не более.
Способ задать стили элементу из js также имеется. Через style. (стиль запишется в атрибут style, который имеет преимущество перед стилями из таблицы стилей (окромя !important)). Так чего же тебе не хватает?

Вот с псевдоэлементами да, проблема. Для них действительно нет способа задавать стили из js (без манипуляции с таблицой стилей). Интересно то, что способ получать стили имеется:

<style>
 h3:after {
   content: ' rocks!';
   color: red;
 }
</style>

<h3>generated content</h3> 

<script>
  var h3       = document.querySelector('h3'), 
      result   = getComputedStyle(h3, ':after').color;

  alert('the generated content color is: ' + result);
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Вывыод контента через JS inet_boy Элементы интерфейса 0 18.11.2013 03:00
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23