2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 50
1

Шестиугольная кнопка / элемент

31.01.2016, 19:23. Показов 4353. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем добра, подскажите пожалуйста, как реализовать шестиугольную (не равнобедренную) кнопку или элемент чтобы при наведении (на шестиугольную область, а не прямоугольную) менялся цвет внутри шестиугольника. и чтобы внутри была возможность поместить текст.
пример:
Название: hexagon.png
Просмотров: 103

Размер: 1.1 Кб
hover, focus:
Название: hexagon_hover.png
Просмотров: 103

Размер: 1.2 Кб
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2016, 19:23
Ответы с готовыми решениями:

Шестиугольная доска
Всем добрый вечер! Помогите пожалуйста кто-нибудь разобраться с решением задачи в паскале, никак не...

Шестиугольная призма GeometryModel3D
Для отрисовки треугольной призмы использую следующий код: <GeometryModel3D.Geometry> ...

шестиугольная пирамида и сфера
Найти сторону основания a и боковое ребро b правильной шестиугольной пирамиды, вписанной в сферу...

Составной элемент - кнопка
Есть такая вот кнопка <StackPanel> <Label Content="Ctrl+O" Template="{StaticResource...

33
2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 50
31.01.2016, 23:19  [ТС] 2
Можно и с использованием js или любыми способами
0
Эксперт HTML/CSS
2964 / 2593 / 1068
Регистрация: 15.12.2012
Сообщений: 9,830
Записей в блоге: 11
31.01.2016, 23:31 3
thefair, могу подкинуть код равнобедренного без границ...
0
Эксперт JSЭксперт HTML/CSS
2435 / 1114 / 312
Регистрация: 23.06.2011
Сообщений: 3,525
01.02.2016, 06:39 4
Можно карты использовать, тогда может быть и без js обойдётся.
вот похожее
Дизайнерское меню
0
2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 50
01.02.2016, 15:01  [ТС] 5
newJS, на сколько я понимаю ховер карте без js не прикрутишь и как бы реализовать надпись, именно текстовую посреди картинки?
0
140 / 74 / 18
Регистрация: 21.02.2014
Сообщений: 3,413
01.02.2016, 15:12 6
Fedor92, мне подкинете?
newJS, а что есть такой тег map?
0
2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 50
01.02.2016, 15:12  [ТС] 7
Fedor92, можно, хоть на равнобедренный посмотрю
0
Эксперт HTML/CSS
2964 / 2593 / 1068
Регистрация: 15.12.2012
Сообщений: 9,830
Записей в блоге: 11
01.02.2016, 15:32 8
Цитата Сообщение от Cdelphi78 Посмотреть сообщение
Fedor92, мне подкинете?
Цитата Сообщение от thefair Посмотреть сообщение
Fedor92, можно, хоть на равнобедренный посмотрю
По просьбам трудящихся...
Кликните здесь для просмотра всего текста
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hex</title>
    <style>
    .hex {
    width:148px;
    height:86px;
    background-color: #ccc;
    background-repeat: no-repeat;
    background-position: 50% 50%;           
    -webkit-background-size: auto 173px;                            
    -moz-background-size: auto 173px;                           
    -ms-background-size: auto 173px;                            
    -o-background-size: auto 173px;                         
    position: relative;
    float:left;
    text-align:center;
    margin-left:5px;
    zoom:1;
}
 
.hex.hex-1.hex-gap:hover{background:blue}
    
    .hex.hex-gap {
        margin-left: 86px;
        margin-top:50px;
    }
 
    .hex .corner-1,
    .hex .corner-2 {
        position: absolute;
        top:0;
        left:0;
        width:100%;
        height:100%;
        background: inherit;                                
        z-index:-2;                     
        overflow:hidden;
        -webkit-backface-visibility: hidden;
        -moz-backface-visibility: hidden;
        -ms-backface-visibility: hidden;
        -o-backface-visibility: hidden;         
        backface-visibility: hidden;
    }
    
    .hex .corner-1 {
        z-index:-1;
        -webkit-transform: rotate(60deg);
        -moz-transform: rotate(60deg);
        -ms-transform: rotate(60deg);
        -o-transform: rotate(60deg);
        transform: rotate(60deg);
    
        
    }
    
    .hex .corner-2 {
        -webkit-transform: rotate(-60deg);
        -moz-transform: rotate(-60deg);
        -ms-transform: rotate(-60deg);
        -o-transform: rotate(-60deg);
        transform: rotate(-60deg);
 
    }
    
    .hex.hex-1 {
        background: #74cddb;
    }
    
    a{text-decoration:none; display:block; text-align:center; vertical-align:middle; font:14px/86px Tahoma}
    </style>
</head>
<body>
    <div class="hex hex-1 hex-gap">     
        <div class="inner"><a href="#">Кнопка</a></div>     
        <div class="corner-1"></div>
        <div class="corner-2"></div>        
    </div>
</body>
</html>

Основан на transform без топорной прорисовки с треугольниками... Границы конечно тоже можно сделать, но это смотрится коряво... Вчера решил Вам код написать - получился ответ в другую тему... В общем код сверху...
2
140 / 74 / 18
Регистрация: 21.02.2014
Сообщений: 3,413
01.02.2016, 15:51 9
Fedor92, а вон оно что, спасибо.)
0
2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 50
01.02.2016, 15:56  [ТС] 10
Fedor92, интересный вариант, спасибо. но на сколько я понял чтобы весь шестиугольник стал ссылкой, блок <a /> тоже нужно шестигранить? и сделать его НЕ равнобедренным или с бордером стилями не получится, правильно?
0
Эксперт HTML/CSS
2964 / 2593 / 1068
Регистрация: 15.12.2012
Сообщений: 9,830
Записей в блоге: 11
01.02.2016, 16:39 11
Цитата Сообщение от thefair Посмотреть сообщение
но на сколько я понял чтобы весь шестиугольник стал ссылкой, блок <a /> тоже нужно шестигранить?
Верно...
Цитата Сообщение от thefair Посмотреть сообщение
и сделать его НЕ равнобедренным или с бордером стилями не получится, правильно?
Бордер прорисовать можно при желании, но получится не очень хорошо... Чтобы сделать его ассиметричным необходимо комбинировать стили... Если граница значения не имеет вот ещё один вариант только нельзя выделить границы и на масштабировании есть косяки:
Кликните здесь для просмотра всего текста
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
50
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hex</title>
    <style>
#hexagon {
    display:block;
    width: 100px;
    height: 35px;
    background: red;
    position: relative;
    margin-top:200px;
    text-align:center;
    font:14px/35px Tahoma;
    text-decoration:none
    
}
#hexagon:before {
    content: "";
    position: absolute;
    top: -25px; 
    left: 0;
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 25px solid red;
}
#hexagon:after {
    content: "";
    position: absolute;
    bottom: -25px; 
    left: 0;
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-top: 25px solid red;
}
 
#hexagon:hover{background:gray; color:white}
#hexagon:hover:before{border-bottom: 25px solid gray; color:white}
#hexagon:hover:after {border-top: 25px solid gray; color:white}
   </style>
</head>
<body>
    <a href="#" id="hexagon">Кнопка</a>
</body>
</html>

Лучший способ сделать шестиугольник либо использовать картинку - либо сделать svg...
0
2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 50
01.02.2016, 20:39  [ТС] 12
Fedor92,
либо сделать svg...
смотрел я в сторону svg, но так и не понял как там реализовать текст внутри картинки и как сделать ховер. + можно ли этот элемент засунуть в label. Если есть какой-то пример, тобуду очень признателен
0
Эксперт JSЭксперт HTML/CSS
2435 / 1114 / 312
Регистрация: 23.06.2011
Сообщений: 3,525
02.02.2016, 06:52 13
Цитата Сообщение от Cdelphi78 Посмотреть сообщение
а что есть такой тег map?
Здрасте, картина Репина, "Пушной зверёк в гостях"

Цитата Сообщение от thefair Посмотреть сообщение
на сколько я понимаю ховер карте без js не прикрутишь
картинка даст больше художественных возможностей.
А про JS нытьё только и слышно, а любой сайт посмотри, там сотни кил библиотек прикручено.
P.S.
А те кого он выключен, так они в курсе..
0
7 / 6 / 7
Регистрация: 10.08.2015
Сообщений: 63
02.02.2016, 09:57 14
del
0
Эксперт HTML/CSS
2964 / 2593 / 1068
Регистрация: 15.12.2012
Сообщений: 9,830
Записей в блоге: 11
02.02.2016, 11:03 15
Цитата Сообщение от thefair Посмотреть сообщение
Если есть какой-то пример, тобуду очень признателен
Опытных примеров, к сожалению нет, только теория... Предлагаю, как альтернативный вариант, если мои не подойдут...
0
2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 50
02.02.2016, 21:28  [ТС] 16
newJS, та я и не против js использовать, только опыты работы с ним КРАЙНЕ мало. Если бы были примеры воспользовался бы...
0
Эксперт JSЭксперт HTML/CSS
2435 / 1114 / 312
Регистрация: 23.06.2011
Сообщений: 3,525
03.02.2016, 10:41 17
Лучший ответ Сообщение было отмечено thefair как решение

Решение

один из вариантов

CSS
1
2
3
4
#sixBut {position:relative; background:url("q2.png"); width:144px; height:97px;}
#sixBut {text-align:center; line-height:97px;}
/* бордюр для тупого амерекосского осла */
#sixBut img {position:absolute; left:0; top:0; border:0;}
HTML5
1
2
3
4
5
6
7
<div id="sixBut">Страна
<img src="q1.png" alt="" usemap="#example1">
</div>
 
<map name="example1" id="example1">
<area href="#" alt="" title="" id="sixButArea" shape="poly" coords="0,24,71,0,73,0,143,24,143,72,73,96,71,96,0,72,0,24">
</map>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(function(){
var el;
 
onload=function(){
el=document.getElementById("sixButArea");
el.onmouseover=over;
el.onmouseout=out;
el=document.getElementById("sixBut").style;
 };
 
function over(){
el.background="url('q1.png')";
 };
 
function out(){
el.background="url('q2.png')";
 };
 
 })();
q1 - полностью прозрачная картинка, только рамка, на нё карта вешается
q2 - это с нужным фоном

и не забудь, бордюр можно и покрасивше нарисовать, png позволяет
Изображения
  
1
Эксперт HTML/CSS
2964 / 2593 / 1068
Регистрация: 15.12.2012
Сообщений: 9,830
Записей в блоге: 11
03.02.2016, 14:01 18
До кучи... Самый простой вариант...
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>Nowrap</title>
    <style>
        html,body{width:100%; height:100%; margin:0}
        a{display:table-cell; text-align:center; vertical-align:middle; text-decoration:none; font:bold 16px/1.25 Tahoma; width:144px; height:97px; background:url(bg.png) no-repeat}
        a:hover{width:144px; height:97px; background:url(hover.png) no-repeat}
    </style>
</head>
<body>
<a href="">Страна</a>
</body>
</html>

ФоныНазвание: bg.png
Просмотров: 76

Размер: 892 байтНазвание: hover.png
Просмотров: 78

Размер: 14.7 Кб
1
30 / 28 / 14
Регистрация: 06.01.2016
Сообщений: 161
03.02.2016, 16:32 19
Вышло немного кривовато, зато на чистом css ))).
http://codepen.io/Andrey7287/pen/OMoVpP
0
Эксперт JSЭксперт HTML/CSS
2435 / 1114 / 312
Регистрация: 23.06.2011
Сообщений: 3,525
04.02.2016, 06:18 20
Fedor92, дык прямоугольная она получается.

andrey7287, по правилам код нужно выкладывать на форум, а ссылки это уже довесок.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2016, 06:18
Помогаю со студенческими работами здесь

При перетаскивании на элемент кнопка должна изменить цвет
Добрый вечер. Когда кнопка перетаскивается на элемент (label) - кнопка окрашивается в зеленый. Не...

[Android] Как сделать чтобы элемент из main.xml (кнопка с рекламой) отображался поверх Phonegap?
Как сделать чтобы элемент из main.xml (кнопка с рекламой) отображался поверх Phonegap?

Массив и кнопка. Выводит самый последний элемент массива, хотя должно по очереде при нажатии
У меня есть кнопка и label. Так же массив где слова. Нажимая на кнопку, должно вывести в label одно...

После цикла элемент "кнопка" не работает
VS2012 .NET4.5 На форме есть элемент &quot;кнопки &quot;(Button1 и Button2) созданная через конструктор а не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru