Rüzgara karşı tükürmeyin!

Ana sayfa » Eğlenceli bir Zihni Sinir projesi ile biraz HTML

Etiketler: Html position
Kategoriler: .Net/C#GeyikTasarım

Bu ilginç ve bir o kadar da gereksiz kod, resimleri html e çeviriyor:) Tersini ararken bunu yapmak geldi aklıma.

Position Stil Özelliği

Bir html elementinin konum (position) stil özelliği, static, absolute, relative ve fixed değerleri alabilir. Varsayılan değeri static dir.
<div style=”position:absoulte;left:100px;top:100px”></div> şeklide belirtilir. Adından da anlaşılacağı üzere html elementinin sayfadaki pozisyonunu ayarlamak için kullanlır.

Absolute Position

Position özelliği bu değeri alan bir html elemente left:100px;top:100px stil özellikleri verirsek elementimiz kendisini sarmalayan üst elementin konumuna bakmaksızın pozisyonunu sayfanın sol üst köşesine göre ayarlar ve orada görünür.

Relative Position

Elementin pozisyonunu, üst elementinin bulunduğu yeri orijin alarak, ayarlamak istiyorsak bu değeri kullanabiliriz.<div style=”position:relative;left:100px;top:100px”></div>  Bu bildirim ile div imizi bulunduğu yerden 100px aşağıya, 100px de sağa kaydırmış oluruz.

Relative position’un absolute position dan önemli bir farkı da şudur. Şayet bir elementin positionu relative ise, kendisini sarmalayan elementi, kendi boyutları kadar, genişletecek / yükseltecektir. Position absloute olan bir element kendisini sarmalayan elementten büyük olsa bile, üst elementin boyutlarını değiştirmez.

Absolute çevir | Relative çevir






Mavi tablo gerçekte 10px eninde olmasına karşın , positionu relative olan ve kendisine göre 40px aşağıda ve 40px sağda olan kırmızı tablo tarafından genişletilmiştir.

Fixed Position

Absolute positiondan farklı olarak, sayfayı scroll etsek de elementin ekrandaki görüntüsü sabit kalır.

Örnek Uygulama

<div style=”positon:absolute:top:0px;left:0px;width:1px;height;1px;background-color:red”></div> html kodunun tarayıcıdaki görünümü, 0,0 kordinatlarında 1pixellik kırmızı bir nokta şeklinde olacaktır.

Bir resim dosyasının tüm pixellerinin kordinat ve renklerini alıp, her bir pixele karşılık positionu absolute olan divler olşturur ve bu divlerin “top” özelliğine pixelin y kordinatını, “left” özelliğine pixelin x kordinatını ve background-color özelliğine de pixelin rengini hex formatında atarsak ürettiğimiz html in tarayıcıdaki görünümü ile resim dosyamız aynı olur. http://www.ceviktavsan.com/tolga/deneme.htm bu adreste aşağıdaki kod yardımı ile oluşturduğum bir örnek var.

İşlemcisine güvenen örnek html’in kaynak koduna bakabilir:) Bu kadar küçük bir resmin 300 kb yer tutması icadımın pek te efektif olmadığını gösteriyor. Ne yalan söyliyim tarayıcının bu kadar düzgün çizeceğini tahmin etmemiştim. Otmotik üretilen p elementinin (div olduğunda her bir element için p ye göre 4 karakter daha fazla yer kaplıyordu o yüzden p kullandım) ortak özellikleri için (en boy position)  class kullandım.  

    Bitmap b = new Bitmap(Server.MapPath("x2.jpg"));
        for (int x = 0; x < b.Width; x++)
        {
            for (int y = 0; y < b.Height; y++)
            {
                Color c = b.GetPixel(x,y);
                string cls = String.Format("#{0:x2}{1:x2}{2:x2}",
                     (uint)System.Convert.ToUInt32(c.R),
                      (uint)System.Convert.ToUInt32(c.G),
                       (uint)System.Convert.ToUInt32(c.B));

                string div = string.Format("<p class=\"p\" style=\"top:{0}px; left:{1}px;background-color:{2};\"></p>", y, x, cls);

                denemeLabel.Text += div;
            }
        }
« İnternet televizyondan daha komik
Alışveriş merkezinde PS3 standı »

Alakalı (olabilecek) yazılar

Alakasız (yüksek ihtimal) yazılar


Konuyla ilgili 3 yorum var...

yorumları takip (rss) et

(bu renkli resimlerden bende istiyorum)

  1. 8 Haziran 2008 / 13:41,
    Ali Utku Selen demiş ki:

    StreamWriter SW;
    SW = File.CreateText("c:\\nazmi.html");
    SW.WriteLine("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
    + "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
    + "<head><title>"
    + "Untitled Page"
    + "</title>"
    + "<style>"
    + ".p"
    + "{"
    + "font-size:1px;position:absolute;width:1px;height:1px;border:none;}</style></head><body><script>");

    Bitmap b = new Bitmap("c:\\nazmi_kucuk.jpg");
    bool seperator = false;

    SW.WriteLine("var img_width = " + b.Width + "; var img_height = " + b.Height + ";");
    SW.WriteLine("var data = new Array(");
    for (int x = 0; x < b.Width; x++)
    {
    for (int y = 0; y < b.Height; y++)
    {
    Color c = b.GetPixel(x, y);
    string cls = String.Format("0x{0:x2}{1:x2}{2:x2}",
    (uint)System.Convert.ToUInt32(c.R),
    (uint)System.Convert.ToUInt32(c.G),
    (uint)System.Convert.ToUInt32(c.B));

    //string div = string.Format("<p class=\"p\" style=\"top:{0}px; left:{1}px;background-color:{2};\"></p>", y, x, cls);

    if (seperator) {
    SW.Write(",");
    } else {
    seperator = true;
    }

    SW.Write(cls);
    }
    }
    SW.WriteLine(");");
    SW.WriteLine("for (i = 0; i < img_width; i++) {");
    SW.WriteLine(" for (j = 0; j < img_height; j++) {");
    SW.WriteLine(" document.write(’<p class=\"p\" style=\"top:’ + j + ‘px; left:’ + i + ‘px;background-color:#’ + data[j + (i * img_height)].toString(16) + ‘;\"></p>’);");
    SW.WriteLine(" }");
    SW.WriteLine("}");
    SW.WriteLine("</script></body></html>");
    SW.Close();

  2. 8 Haziran 2008 / 13:43,
    Ali Utku Selen demiş ki:

    yukarıdaki de javascript versiyonu. işlemci / yer takası yapmak gerekirse diye.

  3. 8 Haziran 2008 / 21:57,
    Tolga Güler demiş ki:

    gereksiz yer viewstate i açık bıraktığımdan html kod büyümüş. özür…




Sen de yorum yazabilirsin!