tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
211
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ricounltd ricounltd ist offline Mitglied Bronze
    Registriert seit
    Sep 2011
    Beiträge
    35
    Hallo,
    kann ich folgenden Code optimieren?

    HTML-Code:
      canvas.style.border = '0';
      canvas.style.width = '100%';
      canvas.style.height = '100%';
      canvas.style.top = '0';
      canvas.style.left = '0';
      canvas.style.bottom = '0';
      canvas.style.right = '0';
    Also kann man diese Style-Angaben irgendwie zusammenfassen? Danke schonmal im voraus für eine hilfreiche Antwort.
     

  2. #2
    Avatar von javaDeveloper2011
    javaDeveloper2011 javaDeveloper2011 ist offline Mitglied Brokat
    Registriert seit
    Feb 2011
    Beiträge
    445
    Blog-Einträge
    5
    Hi,

    ich bin mir ziemlich sicher das das nicht kürzer geht.
    Außerdem kommt es doch im Web eher darauf an alles so zu formulieren das es jeder Browser versteht und nicht möglicht kurze, effiziente Codes zu schreiben!?
    Die Ladezeit und den Aufwand fürs Ausführen sind bei den paar Zeilen doch wirklich zu vernachlässigen, oder was ist der Grund?
     

  3. #3
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    folgendes Codefragment ist zwar nicht kürzer, läßt sich jedoch meiner Meinung nach bequemer pflegen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    var canvas = document.getElementById("canvas"),
        styleObj = {
          border: '1px solid #000',
          borderRight: '3px solid #f00',
          width: '100%',
          height: '100%',
          top: '0',
          left: '0',
          bottom: '0',
          right: '0'
        };
     
    for(var key in styleObj)
      canvas.style[key] = styleObj[key];
    Die CSS-Eigenschaften müssen in camelcase-Schreibweise angegeben werden (siehe borderRight).

    [EDIT]
    Und wenn die "normale" CSS-Schreibweise ebenfalls unterstützt werden soll, kannst du das wie nachstehend realisieren:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    var canvas = document.getElementById("canvas"),
        styleObj = {
          border: '1px solid #000',
          borderRight: '3px solid #f00',
          'border-left-width': '25px',
          width: '100%',
          height: '100%',
          top: '0',
          left: '0',
          bottom: '0',
          right: '0'
        };
     
    for(var key in styleObj)
      canvas.style[key.replace(/\-(\w)/g, function(){
        return arguments[1].toUpperCase();
      })] = styleObj[key];
    CSS-Eigenschaften mit Bindestrichen müssen allerdings in Anführungszeichen gesetzt werden.
    [/EDIT]

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  4. #4
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Mir fällt auf die schnelle nichts kürzeres ein. Aber es ist lesbar und DRY (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself).

    Code javascript:
    1
    2
    3
    
    var s = canvas.style;
    s.border = s.top = s.left = s.bottom = s.right = 0;
    s.width = s.height = '100%';



    Achtung Spoiler:

    Auf keine Fall so, das ist böse!
    Code :
    1
    2
    3
    4
    
    with(canvas.style) {
      border = top = left = bottom = right = 0;
      width = height = '100%';
    }

    Ich bereute schon, dass ich das with-statement da mit rein ziehe.
     

  5. #5
    wollmaus wollmaus ist offline Mitglied Gold
    Registriert seit
    Sep 2010
    Beiträge
    115
    style ist nicht nur ein JS-Objekt, es ist auch ein HTML-Attribut, und als solches kann man es auch setzen:
    Code :
    1
    
    canvas.setAttribute('style','border:0;width:100%;height:100%;top:0;left:0;bottom:0;right:0;');

    (funktioniert ab IE8 und in allen sonst handelsüblichen Browsern)

    Allerdings:
    Dies überschreibt alle inline notierten oder per JS zugewiesenen styles des Elementes, also alles was über das JS-style-Objekt zugreifbar ist. Styles von Stylesheets bleiben unangetastet(es sei denn ein dort notiertes Format wird in setAttribute neu definiert).

    Falls du dich mal für ein Framework entscheiden solltest, jQuery's css-Methode nimmt auch ein Objekt(wie styleObj in Quaese's Antwort) als Argument, das hätte dann nicht die Auswirkungen wie oberhalb bei "Allerdings" vermerkt sondern würde sich verhalten wie dein gegenwärtiges Skript.
     

  6. #6
    Avatar von javaDeveloper2011
    javaDeveloper2011 javaDeveloper2011 ist offline Mitglied Brokat
    Registriert seit
    Feb 2011
    Beiträge
    445
    Blog-Einträge
    5
    Also von wollmaus`Methode würde ich echt abraten, ich verweise mal einfach auf meinen ersten Post.
     

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 19.10.11, 09:37
  2. Auslesen von Style-Infos mit getElementById().style...
    Von Netzwerkidi im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 26.05.11, 11:42
  3. Komisches verhalten zwischen style.left und style.width
    Von one6666 im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 07.04.10, 11:59
  4. <a> Style Angaben werden nicht akzeptiert
    Von Kopfballstar im Forum CSS
    Antworten: 12
    Letzter Beitrag: 04.05.06, 21:33
  5. Übersicht für IMG Style Angaben
    Von Kopfballstar im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 21.10.05, 15:21