Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
3 / 3 / 5
Регистрация: 06.03.2014
Сообщений: 38
1

Измение толщины рамок двигает элемент

28.12.2014, 01:15. Показов 2387. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С помощью JS-скрипта, при наведении я меняю толщину рамки (смотреть в примере: с 1px и 5px).
HTML5
1
2
3
4
5
6
7
<div class="container">
  <div class="e_block">
    <div class="e_element">
      ELEMENT
    </div>
  </div>
</div>
CSS
1
2
3
4
5
6
7
8
9
10
11
.container {
    width: 400px;
    margin: 0 auto;
}
 
.e_element {
    border: 1px blue solid;
    text-align: center;
    width: 100px;
    position: absolute;
}
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$( document ).ready(function(){
  $('.e_element').hover(
    function() {
      $(this).animate({
        "border-width": "5px",
      }, 1000, function() {
        // Animation complete.
      })
    }, function() {
      $(this).animate({
        "border-width": "1px",
      }, 1000, function() {
        // Animation complete.
      })
    }
  );
});
http://jsfiddle.net/Feodor/864z1eyh/


Разумеется элемент меняет широту и высоту и создаётся эффект что элемент сдвинулся с позиции. Как достичь эффекта увелечения толщины рамки с условием, что бы элемент не сдвигался с позиции? Пропорционально двигать его в противоложную сторону? Есть ещё варианты?

Зарание спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2014, 01:15
Ответы с готовыми решениями:

Velocity не двигает
Доброго времени суток, в общем, решил разобратся в движениее через velocity, но сразу же пришел к...

вложенный DIV двигает родителя
на рисунке всё показал &lt;div id=&quot;orangebg&quot;&gt; &lt;div id=&quot;orangeheader&quot;&gt; &lt;div...

margin двигает не свой, а родительский блок
На сайте есть 2 основных блока, сам сайт и низ - там всякие ссылки(назовем его блок 1). В блок 1 я...

Измение файлов
Я установил linux ubuntu, при попытки изменить системный файл, он сохрается с другим расширением....

11
39 / 39 / 26
Регистрация: 11.01.2014
Сообщений: 343
28.12.2014, 01:52 2
1) зачем писать целый js когда с такой операцией css справляется куда лучше?
2) дайте padding в 5 px
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<style>
    .container {
    width: 400px;
    margin: 0 auto;
}
 
.e_element {
    border: 1px blue solid;
    text-align: center;
    width: 100px;
    position: absolute;
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    -o-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
    padding: 5px;
}
.e_block
{
    position: relative;
}
.e_element:hover {
    border-width: 5px;
}
</style>
<div class="container">
  <div class="e_block">
      
    <div class="e_element">
      ELEMENT
    </div>
  </div>
</div>
0
3 / 3 / 5
Регистрация: 06.03.2014
Сообщений: 38
28.12.2014, 02:43  [ТС] 3
Цитата Сообщение от Al_lord Посмотреть сообщение
1) зачем писать целый js когда с такой операцией css справляется куда лучше?
2) дайте padding в 5 px
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<style>
    .container {
    width: 400px;
    margin: 0 auto;
}
 
.e_element {
    border: 1px blue solid;
    text-align: center;
    width: 100px;
    position: absolute;
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    -o-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
    padding: 5px;
}
.e_block
{
    position: relative;
}
.e_element:hover {
    border-width: 5px;
}
</style>
<div class="container">
  <div class="e_block">
      
    <div class="e_element">
      ELEMENT
    </div>
  </div>
</div>
to Al_lord

1) согласен, чистый css всегда лучше JS-скрипта
2) padding не помог - элемент всё также "съезжает в вправо-вниз" при наведении. Тестирую под хромом.
0
511 / 485 / 161
Регистрация: 08.07.2013
Сообщений: 1,714
Записей в блоге: 1
28.12.2014, 04:02 4
надо задать элементу box-sizing:border-box;
1
3 / 3 / 5
Регистрация: 06.03.2014
Сообщений: 38
28.12.2014, 04:39  [ТС] 5
Снимаю шляпу: да, по ширине именно достигнут тот эффект, что мне и нужен был.

С высотой тут уже невозможно что-то поделать? (элемент съезжает вниз)
0
Эксперт HTML/CSS
2964 / 2599 / 1068
Регистрация: 15.12.2012
Сообщений: 9,876
Записей в блоге: 11
28.12.2014, 11:10 6
Derick, почему border? Используйте outline и будет Вам счастье...
0
39 / 39 / 26
Регистрация: 11.01.2014
Сообщений: 343
28.12.2014, 12:46 7
1) согласен, чистый css всегда лучше JS-скрипта
2) padding не помог - элемент всё также "съезжает в вправо-вниз" при наведении. Тестирую под хромом.
эй как не помог? у меня же все отработало, я вам скинул рабочий код, я тоже тестировал под хром... (ну хром это мой основной браузер) ...
0
3 / 3 / 5
Регистрация: 06.03.2014
Сообщений: 38
28.12.2014, 15:34  [ТС] 8
outline классное решение, но не работает с border-radius. Я не стал тут же выкладывать комплекс проблем, но да: именно для этого задания - идеальное решение.
0
39 / 39 / 26
Регистрация: 11.01.2014
Сообщений: 343
28.12.2014, 16:28 9
http://jsfiddle.net/te86f8s0/1/
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<style>
    .container {
    width: 400px;
    margin: 0 auto;
}
 
.e_element {
    border: 1px solid rgba(0,0,255,1);
    text-align: center;
    width: 100px;
    position: relative;
 
 
}
.border
{
        -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    -o-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
    border: 5px solid rgba(0,0,255,0);
}
.e_block
{
    position: relative;
}
.e_element:hover .border {
    
    border: 5px solid rgba(0,0,255,1);
}
 
</style>
<div class="container">
  <div class="e_block">
  
        <div class="e_element">
          <div class="border">
            ELEMENT 
        </div>
    </div>
  </div>
</div>
Идея padinga была в том чтобы выделить место под border, но если padding не подходит, то можно воспользоватся другим элементом, который тоже будет держать место для границ

Добавлено через 15 минут
http://jsfiddle.net/te86f8s0/4/
ну или так нагляднее
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<style>
    .container {
    width: 400px;
    margin: 0 auto;
}
 
.e_element {
    border: 1px solid rgba(0,0,255,1);
    text-align: center;
    width: 98px;
    position: relative;
 
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    -o-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
}
.border
{
        -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    -o-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
    border: 4px solid rgba(0,255,0,1);
}
.e_block
{
    position: relative;
}
.e_element:hover
{
    border: 5px solid rgba(0,0,255,1);
    width: 90px;
}
.e_element:hover .border {
    border: 0px solid rgba(0,0,255,1);
}
 
</style>
<div class="container">
  <div class="e_block">
  
        <div class="e_element">
          <div class="border">
            ELEMENT 
        </div>
    </div>
  </div>
</div>
Добавлено через 5 минут
Если все же надо чтобы граница появлялась без подрагиваний - то вариант 1, но там граница скорее всего выцветает.
Если все же нужно чтото на подобии 2го варианта но без подрагиваний, то это опять таки вариант 1 но с js модификацией....
Во 2м варианте элемент подрагивает, так как от одного элемента граница по одному убирается( сам элемент смещается в верх и влево) а другому элементу граница добавляться обратное смещение
 Комментарий администратора 
Правила форума пункт 5.19
Запрещено размещать ссылки на коды программ, расположенные на других сайтах. Коды программ должны размещаться на форуме.
Ссылка на песочницу - это бонус.
1
3 / 3 / 5
Регистрация: 06.03.2014
Сообщений: 38
28.12.2014, 16:36  [ТС] 10
Цитата Сообщение от Al_lord Посмотреть сообщение
Идея padinga была в том чтобы выделить место под border, но если padding не подходит, то можно воспользоватся другим элементом, который тоже будет держать место для границ
Ну теперь работает, первый код ну не работает - перепроверял. Сейчас разберу принцип и позже отпишусь.
0
20 / 19 / 5
Регистрация: 04.10.2012
Сообщений: 223
28.12.2014, 18:53 11
css лучше js? Ну не слушайте тех, кто никогда не верстал... Чем лучше? Какая аргументация? да потому что ничем, возьмите jquery, и пишите кроссбраузерно, а тот кто с css напишет кучу строк, при этом не охватит все браузеры, при этом добавит кучу невалидных хаков... Ну бред же зачем велосипед изобретать он уже есть ...
0
413 / 378 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
29.12.2014, 13:51 12
Derick, попробуйте так
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.container {
    width: 400px;
    margin: 0 auto;
}
 
.e_element {
    box-shadow: 0 0 0 1px blue;
    text-align: center;
    width: 100px;
    position: absolute;
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    -o-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
    padding: 5px;
}
.e_block
{
    position: relative;
}
.e_element:hover {
    box-shadow: 0 0 0 4px blue;
}
HTML5
1
2
3
4
5
6
7
<div class="container">
  <div class="e_block">
    <div class="e_element">
      ELEMENT
    </div>
  </div>
</div>
http://jsfiddle.net/864z1eyh/12/
0
29.12.2014, 13:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2014, 13:51
Помогаю со студенческими работами здесь

1С Измение тарифов
Люди, помогите)) В моей стране отменили отчисление в Пенсионный фонд с покупки валюты, которое...

Измение PR до апа
По сути: 20 апреля сего года pr одного из сайтов упал с 3 до 2. Прошло примерно 2,5 недели после...

Измение урлов
Хочу немного изменить урлы. Возьмем к примеру раздел - Новости. Так выводятся последние новости...

измение css
Подскажите изменить значение css , снчала определ длину блока дальше нужно изменить css вот пытался...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru