Как сделать это поле со стрелкой CSS совместимым в Safari и IE

#css

#css — код

Вопрос:

Мой друг создал этот код, и я немного доработал его, чтобы он соответствовал нашим целям. Поскольку нам нужен белый текстовый файл с версией границы 1px в соответствии с моей скрипкой.

Однако стрелка не отображается в Safari и Internet Explorer.

Любые предложения: скрипка: http://jsfiddle.net/ozzy/vHLJU/2 /

Код: css

     #container{
position:relative;
margin:10px;
    }
    .rectangle{
position:absolute;
width: 200px; 
height: 100px; 
background: #fff;
border:1px solid #aaa;
    }
   .small-rectangle{
position: absolute;
top: 25px; 
left: 200px; 
width: 100px; 
height: 50px; 
background:#fff;
border:1px solid #aaa;
border-left:2px solid #fff; 
    }
   .magicrect{
position:absolute; 
top: 0px; 
left: 200px; 
width: 99px;
height: 100px;
border-right:1px solid #aaa;
border-left:none;
    }
   .arrow-right{
position: absolute; 
top: 0px; 
left: 300px; 
width: 0; 
height: 0; 
border-top: 50px solid transparent; 
border-bottom: 50px solid transparent; 
border-left: 50px solid #fff; 
    }
 

html — это:

 <div id="container">
  <div class="rectangle"></div>
  <div class="magicrect"></div>
  <div class="small-rectangle"></div>
 <div class="arrow-right"></div>
</div>
 

Должно выглядеть примерно так …
введите описание изображения здесь

Комментарии:

1. Можете ли вы опубликовать фотографию того, как это должно выглядеть?

2. нажмите на скрипку ! 🙂 смотрите вопрос ( добавленное изображение)

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

4. Нет стрелки в Chrome / Mac skitch.com/bialecki/gn3nk /…

5. Отображается на последней версии ff, 7.0.1, думая, что следует использовать rotate и progid

Ответ №1:

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

Редактировать: исправлен разрыв в 1 пиксель. вам нужно изменить порядок HTML-кода и увеличить границу, сдвинув ее на -1 сверху и -1 слева.

Измените свой html на этот

 <div id="container">
<div class="rectangle"></div>
<div class="arrow-right dark"></div>
<div class="magicrect"></div>
<div class="small-rectangle"></div>
<div class="arrow-right"></div>
</div>
 

и добавьте класс css

 .dark {
top:-1px;
border-left: 52px solid #aaa;
border-top:51px solid transparent;
border-bottom:51px solid transparent;
left:299px;
 

}

при этом первая стрелка, которая находится за второй стрелкой, приобретает темный цвет, а затем выталкивает ее на 1 пиксель, чтобы она отображалась из-за второй стрелки.

Комментарии:

1. Хорошая работа, да, аналогичная проблема с @joseph, похоже, в нижней части треугольника (точки со стрелками) есть разрыв в 1 пиксель, но отличная работа

2. Отличные усилия, ребята, вы МОЛОДЦЫ!

3. если вы считаете, что это лучший ответ, вы должны принять его 😉

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

5. @422 Я поддерживаю это… Я не буду чувствовать себя плохо, если вы вернете лучший ответ на этот.

Ответ №2:

Вы можете создать замаскированный треугольник, который будет находиться за фактическим, как показано в этом примере:

http://jsfiddle.net/BqGyU/

В основном концепция заключается в создании двух треугольников. Похоже, что первоначальная концепция заключалась в том, чтобы иметь белый треугольник (используя рамку для его создания) на нецветном фоне. Это нормально, но если вам нужна граница вокруг этого, вы не можете использовать свойство border . Чтобы обойти это, вы можете создать под ним еще один треугольник с цветом границы. Затем этот параметр отключается, чтобы создать эффект границы.

 .arrow-right-top{
    position: absolute; 
    top: 1px; 
    left: 300px; 
    width: 0; 
    height: 0; 
    border-top: 49px solid transparent; 
    border-bottom: 49px solid transparent; 
    border-left: 49px solid #fff; 
}
.arrow-right-bottom{
    position: absolute; 
    top: 0px; 
    left: 300px; 
    width: 0; 
    height: 0; 
    border-top: 50px solid transparent; 
    border-bottom: 50px solid transparent; 
    border-left: 50px solid #aaa;
}
 

Комментарии:

1. Насколько это близко, не тестировалось в Safari, но в ie и Chrome в нижней части треугольника есть разрыв в 1 или 2 пикселя, отличная работа! Теперь протестировано в Safari, да, разрыв всего в один или два пикселя.

2. Единственное, что мне не нравится в этом ответе, это то, что нет никакого фактического кода и / или объяснения. :(

3. Блестящий Джош, проголосовал. Также благодаря тому, кто проголосовал за меня, я набрал 1000, спасибо

4. @422 совсем не трюк 🙂 просто измените атрибут стиля borderLeftColor правой нижней стрелки

5. @422 Это не совсем кроссбраузерно… IE6, я думаю, не поддерживает его? но это идея: jsfiddle.net/bg37Y/1 РЕДАКТИРОВАТЬ: или, может быть jsfiddle.net/bg37Y/2