1. Dashboard
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. HTML - Webmaster Forum
  2. Programmierung - Entwickler Forum
  3. PHP Forum - Apache - CGI - Perl - JavaScript und Co.

Jquery Problem

  • DummerTroll
  • 17. Juni 2013 um 11:21
  • DummerTroll
    Anfänger
    Beiträge
    7
    • 17. Juni 2013 um 11:21
    • #1

    Hallo,
    ich habe ein kleines Problem. Ich lasse mir ein Bild in einem Kreis ausgeben, mit border-radius gelöst. Jetzt möchte ich, dass wenn man über das Bild fährt, das Bild transparenter wird und dass sich dann ein anderes Element eingefadet wird. Es sollen also 2 Elemente übereinander liegen und je nach dem eins eingeblendet bzw. ausgeblendet werden.

    Mein Problem ist die Positionierung. Der Container der ausgeblendet werden soll, liegt immer drüber.

    Code sieht wie folgt aus:

    HTML:

    HTML
    <a href="detail/anja.php">                            
    <div class="image-container">                                
    <span class="image-info">Anja</span>                                
    <span class="image-wrap " style="position:relative; display:inline-block; background:url(bilder/gallery-1/0.jpg) no-repeat center center; width: 17em; height: 17em;">                                    
    <img class="circle" src="bilder/gallery-1/0.jpg" style="opacity: 0;">                                
    </span>                            
    </div>                        
    </a>

    Jquery:

    Code
    $(document).ready(function(){              
    $(".circle").load(function() {
                        $(this).wrap(function(){
                              return '<span class="image-wrap ' + $(this).attr('class') + '" style="position:relative; display:inline-block; background:url(' + $(this).attr('src') + ') no-repeat center top; width: ' + $(this).width() + 'px; height: ' + $(this).height() + 'px;" />';
                        });
                        $(this).css("opacity","0");
                  });

    CSS:

    Code
    .circle {    width:17em;
        height:17em;
    }
    
    
    
    
    .image-wrap {
        -webkit-border-radius: 50em;
        -moz-border-radius: 50em;
        border-radius: 50em;
    }
    
    
    
    
    .image-container {
        width:17em;
        height:17em;
    }
    
    
    
    
    .image-info {
        position:relative;
        background:black no-repeat center center;
        width:17em;
        height:17em;
        -webkit-border-radius: 50em;
        -moz-border-radius: 50em;
        border-radius: 50em;
        opacity:1;    
    }
    
    
    
    
    .circle-list {
        text-align:center;
    }
    
    
    
    
    .circle-list li {
        display:inline;
        line-height:5em;
        margin-left:1em;
        margin-right:1em;
    }
    Alles anzeigen

    Hoffentlich kann mir jemand helfen :)

  • Tobse
    Kaiser(in)
    Reaktionen
    4
    Beiträge
    2.439
    • 17. Juni 2013 um 14:48
    • #2

    zunächst mal das css aus dem HTML in dein CSS-File. Dann beide Bilder auch als solche deklarieren.
    Und eigentlich sollte es dann klappen, beide mit

    Code
    position: relative;
    top: 0;
    left: 0;

    Überainandern zu legen. Dann kannst du mit fadeOut/fadeIn auf dem Oberen hin- und her faden

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • DummerTroll
    Anfänger
    Beiträge
    7
    • 17. Juni 2013 um 17:05
    • #3

    Css ist in einer extra Datei.
    Leider haben sich die Beiden Spans nicht verschoben und hängen immer noch wie im Bild :(

  • threadi
    König(in)
    Reaktionen
    4
    Beiträge
    1.391
    • 17. Juni 2013 um 19:06
    • #4

    <a>-Elemente sind Inlineelemente in denen keine Blockelemente wie <div> oder <h3> vorkommen dürfen. Wenn Du all diese Inhalte verlinken willst, dann müsstest Du entweder jeden Inhalt einzeln verlinken oder statt <div> und <h3> eher <span> verwenden und die Ausgabe per CSS entsprechend anpassen. Ausnahme wäre, wenn Du einen HTML5-Doctype verwendest - dort ist so eine Verschachtelung zulässig.

    Unabhängig davon wäre ein Link zur Seite interessant.

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 17. Juni 2013 um 22:27
    • #5

    mit position:relative wird man nichts übereinander bekommen, dafür muss der wrapper relative sein und die elmeente an sich absolut, z-index nich vergessen!

    und die besten ergebnisse haste wenn du nicht die fade-funktionen nimmst sondern ein animate auf die opacity machst.
    aber wie threadi schon sagte ist ein link immer mehr wert, als der code, weil man da das zusammenspiel aler elemente sehen kann und des ganze auch debuggen kann.

  • DummerTroll
    Anfänger
    Beiträge
    7
    • 17. Juni 2013 um 23:22
    • #6

    Habe die Seite mal kurz hochgeladen: http://christophkreibich.de/sandbox/0007/V2/

    Eigentlich nutze ich HTML 5...

  • threadi
    König(in)
    Reaktionen
    4
    Beiträge
    1.391
    • 18. Juni 2013 um 00:03
    • #7

    Ich bin mir nicht sicher was mit jQuery nun genau dort passieren soll - bei mir passiert gar nichts. Allerdings fällt mir auf, dass Du wenn Du die Bilder an der selben Stelle haben willst beide per

    Code
    position: absolute;

    ausrichten solltest, nicht relativ wie es aktuell ist.

  • DummerTroll
    Anfänger
    Beiträge
    7
    • 18. Juni 2013 um 00:07
    • #8

    Ah absolute ist perfekt :) Scheint jetzt erstmal zu funktionieren. Dankeschön :)

    Nächstes Problem:
    Mein schwarzer Kreis im Hintergrund gibt jetzt dem eigentlichen Bild einen Rahmen. Den möchte ich aber nicht... Größe verändern hilft leider nicht und Positionierung hat mich auch noch nicht zum richtigen Ergebnis gebracht.

    Edit 2:
    Mit mehreren Bildern funktioniert es leider nicht mehr :( Ich hab die Datei nochmals aktualisiert.

    2 Mal editiert, zuletzt von DummerTroll (18. Juni 2013 um 00:14)

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 18. Juni 2013 um 12:03
    • #9

    probier mal den kreisen nen weißen rahmen zu geben.
    hab deine technik da noch nicht so ausprobiert, daher nur ein tip ins blaue.

    aber: du solltest dir um deine struktur gedanken machen.
    erst baut man seine funktion für ein objekt, dann haut man ein zweites objekt dazu und schaut nach fehlern, erst danach kann man die restlichen objekte hinzufügen.

    wrapper => objekt

    so dass du nur die wrapper positinieren musst und die objekte einfach drin liegen und dann haste später eine art objektmatrix, mit der alles fruchten sollte

  • DummerTroll
    Anfänger
    Beiträge
    7
    • 18. Juni 2013 um 23:27
    • #10

    Ich versteh nicht ganz was du meinst...

    Ich habe etwas weiter versucht. Leider klappt es nur bei ein paar wenigen Kreisen :(

    Einmal editiert, zuletzt von DummerTroll (18. Juni 2013 um 23:58)

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 19. Juni 2013 um 10:49
    • #11

    na du machst dir bei einer wiederkehrenden html-struktur zuerst nur ein objekt fertig, das stopfst du in ein umschliessendes element.
    dieses element wird später positioniert (ganz normal mit floats, margins, paddings, whatever)
    wenn du dieses objekt mit script und css fertig hast, verdoppelst du den code und schaust, obs noch passt, wenn ja stopfste alle anderen elemente in den code und schaust wie es wird.
    was du da hast macht nen sehr unaufgeräumten eindruck und wenn du wie beschrieben vorgehst, wirst du früher fehler erkennen und ausmerzen können.

  • DummerTroll
    Anfänger
    Beiträge
    7
    • 20. Juni 2013 um 11:51
    • #12

    So ich habs nochmal geupdated. http://christophkreibich.de/sandbox/0007/V2/
    Problem ist jetzt:
    Wie kann ich alle Kreise zentrieren, sprich so wie wenn ich eine Text mit text-align:center positioniere?

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 20. Juni 2013 um 13:28
    • #13

    meinste so?

    Code
    .circle-list {
      margin: 0 auto;
      text-align: center;
      width: 800px;
    }
  • DummerTroll
    Anfänger
    Beiträge
    7
    • 21. Juni 2013 um 10:37
    • #14

    Gerade ist mir was komisches passiert...

    Im FireFox schauts so aus:

    und in Chrome so:

    Was kann da der Fehler sein?

Tags

  • bilder
  • style
  • background
  • jpg
  • text
  • problem
  • img
  • bild
  • php
  • div
  • sparen
  • gallery
  • border
  • inline
  • height
  • css
  • info
  • image
  • repeat
  • display
  • element
  • config
  • container
  • ready
  • align

Benutzer online in diesem Thema

  • 1 Besucher
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
Zitat speichern