2013-03-26 12 views
6

Ich versuche, ein div zu erstellen, die auf der oberen Seite Platz und fließen in ein Dreieck,ein CSS-Dreiecks in Prozent Schaffung

der Platz Teil schwer, nicht so ist, und funktioniert gut, aber das Dreieck Teil ist ein bisschen schwieriger. Die Box muss von der Größe mit der Bildschirmgröße ändern, im Quadrat tat ich dies mit% in der Breite und Höhe, aber ich kann nicht das% -Zeichen in der Eigenschaft border verwenden

Der Code ich habe in diesem Moment

HTML

<div id="overV12" class="menuItem" onclick="scrollToT('#overons')" onmouseover="setHover('overV12')" onmouseout="setOldClass('overV12')"><div class="menuInner">Over V12</div></div> 

CSS

div.menuItem 
{ 
height: 5.38%; 
width: 7.44%; 
position: fixed; 
background-color: rgb(239, 239, 239); 
cursor: pointer; 
z-index: 12; 
text-align: center; 
top: 4.3%; 
} 

div.menuItemHover 
{ 
height: 5.38%; 
width: 7.44%; 
position: fixed; 
cursor: pointer; 
z-index: 12; 
text-align: center; 
top: 4.3%; 
background-color: rgb(211, 211, 211); 
} 

div.menuItemActive 
{ 
height: 7.8%; 
width: 7.44%; 
position: fixed; 
cursor: pointer; 
z-index: 12; 
text-align: center; 
top: 4.3%; 
background-color: Black; 
color: White;  
} 

das JavaScript ist für die Einstellung der Klasse verwendet: i tat dies, weil ich eine parralax li verwenden bliothek und wollte

auf einer bestimmten Höhe

i jemand den Knopf auf „aktiv“ gesetzt hoffen mich (und vielleicht auch andere) kann helfen, mit diesem Problem

jsfiddle example Meine Idee ist, dass, wenn das div gesetzt auf Klasse menuItemActive, wird es auf den Pfeil hat, sonst nicht Dies ist nur, wenn sie auf dem aktiven

+0

Können Sie Code bereitstellen Probe über jsFiddle? –

+0

Fertig, ich bearbeitet in der Frage –

+0

Sie können auch diese Antwort für ein reaktionsfähiges Dreieck überprüfen: http://Stackoverflow.com/a/24808936/1811992 –

Antwort

1

fand ich die Lösung von Javascript statt prozentualer verwenden, Fiddle Ich hoffe, dass dies auch einige andere Leute

helfen können

Das Java-Skript i benutzten:

$(document).ready(setSize()); 

function setSize() { 
    var halfWidth = ($('.div1').width())/2; 
    $('.div2').css('border-width', ('50px ' + halfWidth + 'px 0 ' + halfWidth + 'px')); 
    $('.div2').css('top', ($('.div1').height())); 
} 
+1

Für zukünftige Referenz habe ich eine Version, die Größe ändert, wenn das Fenster ändert + einige CSS-Zeug. http://codepen.io/clouddueling/pen/zlsaJ?editors=110 –

0

seinen besser zu verwenden, um ein Hintergrundbild für benutzerdefinierte wie diese geformt gesetzt, es wird es an der Agentur zu erleichtern und Sie können machen Sie es sich leicht für verschiedene Auflösungen anpassen

+0

Wenn ich ein Bild (was ich am Anfang getan habe) dann es streckt sich aus und wird auf größeren Bildschirmen hässlich. –

+0

für welchen genauen Zweck wird dies verwendet? ein Knopf? Sie Problem mit Pixxelting ist, dass ein kleines Originalbild verwenden Sie ein PNG von etwa 256 * 256 und verwenden Sie den Code zu machen ist kleiner so unter der Annahme, dass es eine Schaltfläche ist, selbst bei höchsten Auflösungen wäre es in guter Form – ManZzup

+0

es wird für eine Menü-Taste verwendet, und ich bin mir nicht sicher, ob die Größe der Schaltfläche Bild größer ist als die angeforderte Größe auf dem Bildschirm, ich werde in diesem Morgen schauen. (Als ich wieder in der Gegenwart meines PCs bin) –

6

Dies verwendet zwei überlappende divs zum Erstellen des Dreiecks und this method, um die Dinge flüssig zu machen und gleichzeitig das Seitenverhältnis beizubehalten.

Working Example

.div1 { 
    width:100%; 
    height:100%; 
    border: 1px solid red; 
    position:absolute; 
    z-index:2; 
} 
.div2 { 
    width:70%; 
    min-height:70%; 
    transform:rotate(45deg); 
    border:1px solid blue; 
    position:absolute; 
    left:15%; 
    top:65%; 
    z-index:1; 
} 
#container { 
    display: inline-block; 
    position: relative; 
    width: 25%; 
} 
#dummy { 
    padding-top: 100%; 
} 
#element { 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    left: 0; 
    right: 0; 
} 

Ich habe es ohne Hintergrund könnte man so sehen, wie es funktioniert.

+0

Ich habe versucht, den Pfeil flüssig zu machen, aber da eine Grenze mit cant mit Präcentage eingestellt werden kann, musste ich dieses Problem mit Javascript lösen, ich benutzte deine Geige als eine Basis und erstellt dies, [JSFiddle] (http://jsfiddle.net/bLW5Z/1/) –

+0

versuchen Sie dies - http://jsfiddle.net/apaul34208/SpSdR/2/ – apaul

+0

Vielen Dank für Ihre Mühe, aber ich Deine Geige ist nicht das Ergebnis, nach dem ich suche. Ich habe es schon und habe es im ersten Befehl eingefügt. @ apaul34208 Ich möchte Sie für Ihre Mühe thoug –

1

Sie können in CSS Dreiecke machen.

Hier ist ein Link zu einem Artikel, der die allgemeine Technik umreißt: http://css-tricks.com/snippets/css/css-triangle/. Es gibt auch eine Vielzahl ähnlicher/anderer Ansätze für etwas andere Situationen, die ich gefunden und benutzt habe, suche einfach "css-Dreiecke".

Um die Technik kurz zu beschreiben: es verwendet vier Grenzen auf einem Element (wenn Sie einen Pfeil nach unten wollten, würden Sie dieses Element in Ihrem <div id="overV12">, oder je nach Effekt, wenden Sie es an Ihre innere <div>). Einige sind transparent, andere nicht. Durch Ändern der Rahmenbreiten und -farben können Sie CSS-Dreiecke generieren, die vollständig angepasst werden können, um verschiedene Winkelgrade, Längen usw. zu erstellen. Ich habe dieses Konzept auch zum Erstellen von CSS-only-Sprechblasen und Tooltip-Handles verwendet.

Ich habe diese Technik ausgiebig verwendet, und in meinen Anwendungsfällen funktionierte es in jedem Browser (obwohl ich mich erinnere, ein Problem mit IE6 in einem Projekt zu haben).