2016-10-29 1 views
-5

Это не должно быть кликабельная область вокруг этого круга, как я могу это сделать?Как создать область без кликов вокруг объекта?

.circ { 
 
    position: absolute; 
 
    left: 50%; 
 
    top: 50%; 
 
    width: 400px; 
 
    height: 400px; 
 
    border-radius: 50%; 
 
    background: red; 
 
    overflow: hidden; 
 
    transform: translate(-50%, -50%); 
 
} 
 
.circ .sub-1, 
 
.circ .sub-2 { 
 
    position: absolute; 
 
    width: 200px; 
 
    height: 200px; 
 
    background: green; 
 
} 
 
.circ .sub-1 a, 
 
.circ .sub-2 a { 
 
    position: relative; 
 
    display: block; 
 
    width: 100%; 
 
    overflow: hidden; 
 
    height: 100%; 
 
    background: yellow; 
 
} 
 
.sub-2 { 
 
    bottom: 0; 
 
    right: 0; 
 
}
<div class="circ"> 
 
    <div class="sub-1"> 
 
    <a href="#"></a> 
 
    </div> 
 
    <div class="sub-2"> 
 
    <a href="#"></a> 
 
    </div> 
 
</div>

+0

благодарит людей! –

+0

Собственно, ваш код работает в Edge/Firefox, но не в Chrome, который имеет историю с отсечением и границей: http://stackoverflow.com/questions/29101743/inconsistent-selectable-area-of-elements-with-border -radius – LGSon

+0

Проверка старых ответов и обнаружение этого. Я обновил свой ответ с помощью примера, который тоже работает с Chrome, и включил его, поэтому, если вы его просмотрите, и если он будет работать над ним/принять его. – LGSon

ответ

0

Обновлено

Он должен работать как есть, испытанный в Крае и Firefox и обе работы, хотя Chrome (и, возможно, другие браузеры на основе WebKit тоже) были проблема раньше с не clipping border radius, и в вашем случае они все еще появляются.

Вот обходной путь, упрощенная версия, которая работает, поворачивается на 30 градусов.

Хитрость, чтобы сделать его работать на Chrome (предположим, что все браузеры на основе WebKit) является:

  • не использовать position на DIV circ и якорей a
  • переместите 2: й анкер с использованием маржи вместо из position

.wrap { 
 
    position: absolute; 
 
    left: 50%; 
 
    width: 400px; 
 
    height: 400px; 
 
    transform: translateX(-50%) rotate(30deg); 
 
} 
 
.circ { 
 
    width: 100%; 
 
    height: 100%; 
 
    border-radius: 50%; 
 
    background: red; 
 
    overflow: hidden; 
 
} 
 
.circ a { 
 
    display: block; 
 
    width: 50%; 
 
    height: 50%; 
 
    background: yellow; 
 
} 
 
.circ a + a { 
 
    margin-left: 50%; 
 
}
<div class="wrap"> 
 
    <div class="circ"> 
 
    <a href="#"></a> 
 
    <a href="#"></a> 
 
    </div> 
 
</div>

+0

У нас сложилась ситуация, что этот круг имеет много поворотного преобразования. И было число детей от 2 до 6 внутри. Таким образом, мы даже не должны использовать граничный верхний левый радиус: 100%; , потому что он динамически изменяется –

+0

Изменения стороны –

+0

@ ІвченкоДима Эта информация имеет решающее значение, и поскольку вы не опубликовали ее в своем первоначальном вопросе, вам нужно будет точно указать, где это происходит. Как я уже отмечал выше, у Chrome есть проблемы, но может быть и способ, основанный на конечном результате, который вы после – LGSon

Смежные вопросы