Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Не кликабельные области ссылки в Opera (https://javascript.ru/forum/xhtml-html-css/25034-ne-klikabelnye-oblasti-ssylki-v-opera.html)

dr_gluk 23.01.2012 12:57

Не кликабельные области ссылки в Opera
 
Доброе утро.

Впервые сталкиваюсь с данной проблемкой, есть, казалось бы простая ссылка с бекграундом и текстом внутри http://clip2net.com/s/1vPbB, ссылка вида:
<a class="add_advert" href="blablabla.com">Продать авто</a>
CSS:
a.add_advert {background-position: 0 0; color: #FFFFFF; display: block; font-size: 14px; font-weight: bold; height: 16px; padding: 7px 0 8px 35px; position: absolute; right: 0; text-decoration: none; text-shadow: 0 -1px #497E16; top: 0; width: 109px; z-index: 100;}

По ссылке выше на картинке видно красным две полоски, по сути где-то по миллиметру, которые в опере не хотят кликаться, то есть переход по ссылке не происходит.
*с кнопкой есть небольшая динамика, на ссылку навешено в css :hover (меняется бекграунд) и :active (при нажатии меняется бекграунд + ссылка/кнопка сдвигается на 1 пиксель вправо и вниз), так вот я заметил, что некликабельные области появляются только если есть какие-то действия на :active, а так в обычном состоянии и на :hover ссылка чётко кликается, пробовал дублировать стили, что были при :active ещё и для :focus, но что-то не помогло.

Популярная ли это проблема и есть ли какие-то рекомендации как починить это для оперы.

Заранее благодарен.

---
С уважением, Константин

Seva1986 23.01.2012 13:33

dr_gluk,

полный код в студию

dr_gluk 23.01.2012 13:53

Спасибо, что откликнулись.

HTML
:
<a href="blablabla.com" class="add_advert" onmouseup="this.blur();">Продать авто</a>

CSS:
a.add_advert {position: absolute; width: 109px; display: block; height: 16px; top: 0px; right: 0px; background-position: 0px 0px; text-decoration: none; color: #FFFFFF; font-size: 14px; font-weight: bold; text-shadow: 0 -1px #497E16; padding: 7px 0px 8px 35px; z-index: 100; background-image: url("../../img/all.png"); background-repeat: no-repeat;}

a.add_advert:hover {width: 112px; height: 16px; top: -3px; right: -3px; background-position: -212px 0px; padding: 10px 0px 11px 38px;}

a.add_advert:active {background-position: -212px -37px; width: 112px; height: 16px; top: -2px; right: -4px; padding: 10px 0px 11px 38px;}

Seva1986 23.01.2012 15:16

dr_gluk,

вообще я имел ввиду вставить код в сообщение в рабочем виде ну ладно и так посмотрю. щас пару минут...

Seva1986 23.01.2012 15:25

вот ваш код, добавил вместо картинки цвет фона, так как у меня нет вашей картинки везед всё работаете без полосок...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style>
a.add_advert {
position: absolute; 
width: 109px;
 display: block;
 height: 16px;
 top: 0px; right: 0px; 
 background-position: 0px 0px;
 text-decoration: none; 
 color: #FFFFFF; 
 font-size: 14px;
 font-weight: bold;
 text-shadow: 0 -1px #497E16; 
 padding: 7px 0px 8px 35px;
 z-index: 100;
 background-image: url("../../img/all.png"); 
 background:red;
 background-repeat: no-repeat;
 }
 
 a.add_advert:hover {
 width: 112px; 
 height: 16px;
 top: -3px; 
 right: -3px;
 background-position: -212px 0px;
 padding: 10px 0px 11px 38px;
  background:green;
 }

a.add_advert:active {
background-position: -212px -37px;
background:blue;
 width: 112px;
 height: 16px;
 top: -2px;
 right: -4px;
 padding: 10px 0px 11px 38px;
 }
</style>
</head>
<body>
<a href="" class="add_advert" onmouseup="this.blur();">Продать авто</a>
</body>

</html>

dr_gluk 23.01.2012 16:31

Вложений: 1
Добавил вложение, html, css и картинка только чисто для кнопки, можно посмотреть в Опере, однопиксельная полоска под текстом не кликабельная получается.
*можно увеличить через ctrl+ ту кнопку для удобства и прокликать прямо под текстом;

Seva1986 23.01.2012 16:51

dr_gluk,
http://clip2net.com/s/1vRXR

вот такая кнопка, увеличил в опере версия 11,60 всё нормально нету некликабильной полоски.

какая у вас версия оперы?

dr_gluk 23.01.2012 17:01

У меня Опера тоже последняя (11.60), смотрел на нескольких компьютерах, тестировщик тоже проверил, вот эти области на кнопке некликабельные: http://clip2net.com/s/1vS1A (кнопка сдвигается на пиксель вниз и вправо при нажатии левой кнопки мыши, отпускаем, становится на место, но переход по ссылке никак не происходит). Как такое блин выходит в той опере, понятия не имею. Уже и в какой-то span брал внутренний текст и позиционировал абсолютно его внутри "кнопки", пробовал и padding'и другие и line-height, но области чётко не кликаются именно по границам текста справа и снизу и только в опере.

Seva1986 23.01.2012 17:07

dr_gluk,

а есть остальной css данного документа? может оттуда чтото лезит.. просто очень старный глюк, некликабельная область внутри ссылки может быть только если чтото из вне позиционируеться поверх этой ссылки...

Seva1986 23.01.2012 17:14

dr_gluk,


А стоп нашёл это происходит после клика если не двигать мышкой.
щас подумаю...

dr_gluk 23.01.2012 17:17

Выложить "расширенную" версию не удастся, она "вне офиса" закрыта, но по сути в том куске, что я кинул в архиве проблема ведь также наблюдается. По верху врядли что-то накладывается. Есть на сайте у меня несколько разных внешне "кнопок" в совсем разных местах и там проявилась такая же проблема в опере, я просто показал в архиве приблизительно одну такую кнопку. В принципе, кодингом, года 4+ занимаюсь, не слышал о такой проблеме и не натыкался на такое. Проблема реально прощупывается в активном состоянии :active, если отключаю стили, то всё кликается как следует. Возможно прийдётся в конечном итоге на js пробовать ещё делать "активной" эту кнопку, со стилями какая-то фигня, блин.

dr_gluk 23.01.2012 17:19

>А стоп нашёл это происходит после клика если не двигать мышкой.
>щас подумаю...

Ага, какой-то fucking fuck :), у нас просто тестировщик достаточно дотошный..

Seva1986 23.01.2012 17:23

Вложений: 1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
       <style>
a.add_advert {
    background-image: url(http://javascript.ru/forum/attachments/xhtml-html-css/1095d1327324958-ne-klikabelnye-oblasti-ssylki-v-opera-123-png);
    background-repeat: no-repeat;
}

a.add_advert {
    position: absolute;
    width: 109px;
    display: block;
    height: 16px;
    top: 200px;
    left: 200px;
    background-position: 0px 0px;
    text-decoration: none;
    color: #FFFFFF;
    font-size: 14px;
    font-weight: bold;
    text-shadow: 0 -1px #497E16;
    padding: 7px 0px 8px 35px;
    z-index: 100;
}

a.add_advert:hover {
    width: 112px;
    height: 16px;
    top: 197px;
    left: 197px;
    background-position: -212px 0px;
    padding: 10px 0px 11px 38px;
}

a.add_advert:active {
    background-position: -212px -37px;
    width: 112px;
    height: 16px;
    top: 198px;
    left: 198px;
    padding: 10px 0px 11px 38px;
}
       </style>
</head>
<body>
	<a class="add_advert" href="http://www.google.com">Blablabla</a>
</body>
</html>

Seva1986 23.01.2012 17:28

dr_gluk,

я сейчас посмотрел это помойму в опере на всех сайтах происходит если урла нет...

dr_gluk 23.01.2012 17:32

Цитата:

Сообщение от Seva1986 (Сообщение 152325)
dr_gluk,
я сейчас посмотрел это помойму в опере на всех сайтах происходит если урла нет...

так, а, что по сути изменилось, ты имеешь в виду без "http"? то, что ты кинул сейчас тоже не срабатывает. Есть эти области.

Seva1986 23.01.2012 17:39

dr_gluk,

стоп, давай ещё раз, при ховере на определённых кусках этойй ссылки всегда некликабельная область, правильно? или она возникает только после того как кликнул и не отпуская мышку немного перетащил?

dr_gluk 23.01.2012 17:55

Цитата:

Сообщение от Seva1986 (Сообщение 152327)
dr_gluk,
стоп, давай ещё раз, при ховере на определённых кусках этойй ссылки всегда некликабельная область, правильно? или она возникает только после того как кликнул и не отпуская мышку немного перетащил?

Воссоздаю проблему:
Наводим мышкой (сначала есть hover со смено bg) и нажимаем под текстом на кнопке (либо правее чуть от него), срабатывает :active (сдвиг и смена бекграунда), не двигаем курсором, отпускаем кнопку мыши и переход по ссылке не происходит. Думаю, что может и можно конечно двигать курсором, но мол всё равно если в той "однопиксельной" зоне попадать, то переход не произойдёт.

Методом исключения я вижe, что трабл именно с :active, если убрать стили для такой ситуации, то fucking областей нету.

Seva1986 23.01.2012 18:08

dr_gluk,


всё поймал это... да я такого тоже не встречал или не замечал раньше...

но могу предположить что это связанно не с самим :active а со смещением при :active

Если с равнить с лисой например то там если кликнуть и потянуть за фон он двигается вместе с текстом, а в опере текст можно отдельно тащить а фон отдельно, видимо с этим и связанно, при клике идёт сдвиг и видимо изза какойто разницы сдвигов возникает проблема... возможно это можно было бы пофиксисить таким событием
ondragstart = "return false" но опера его не поддерживает, поэтому тоже не поможет...
Самый простой вариант пофиксить это, не двигать кнопку при клике...

попробуй сделать эфект сдвига например с помощью удаления и добавления рамок думаю получится, хотя нет, движение тоже тогда будет происходить, раз уж там спрайт то просто перересуй сами заготовки а кнопку не двигай и не изменяй размер её.

dr_gluk 23.01.2012 18:42

Цитата:

Сообщение от Seva1986 (Сообщение 152327)
dr_gluk,
раз уж там спрайт то просто перересуй сами заготовки а кнопку не двигай и не изменяй размер её

Если я правильно понял, ты предлагал подправить спрайт чтобы когда активной становилась, то происходил сдвиг просто в виде позиционирования бекграунда самого, сделал так, при этом текст нужно бы тоже двигать педдингами, но даже без этого, если оставлять текст на месте, для эксперимента "двигать" кнопку самим бекграундом подправленного спрайта, увы всё равно есть такие области..

Ладно, это какая-то странная передряга, мне уже неудобно, что я тебя отвлекаю на такую задачу в течении дня. Попробую "помозговать" ещё сам, чтоли какое-то время.

Seva1986 23.01.2012 18:54

dr_gluk,
у текста можно тень двигать.
кстати также у самой кнопки можно сделать тень и двиагать...
главное движение кнопки убрать...чтобы её левый верхний угол был на одном месте...

Но это как вариант... не уверен что поможет но баг действительно отвратительный...


Часовой пояс GMT +3, время: 03:17.