<p> ve <div> arasındaki fark nedir?


188

<p> ve <div> arasındaki fark nedir?

Bunlar birbirinin yerine kullanılabilir mi? Uygulamalar nelerdir?


32
Geçişli veya katı herhangi bir geçerli HTML / XHTML'de, bir <p> öğesini başka bir <p> içine yerleştiremezsiniz, böylece <div> ve <p> değiş tokuş olmaz.
Byran Zaugg

3
Byran - Bu "semantik" cevaplarla ilgili önemli sorunu vurdunuz. Sorun HTML'nin <p> leri yapay olarak kısıtlaması dolayısıyla farklı davranmalarıdır. Onlar sadece blok elemanları artı semantik anlamı olsaydı tamam olurdu. Peki, örneğin bir paragrafa örnek gömmenizi neden engelliyorsunuz?
dkretz

2
@ 117700 kabul edilen cevabı değiştirmeyi düşündünüz mü?
Karl Richter

Unutmayın, <div></div>açık ve kapalı etiketler gerektirir <p>, belirli durumlarda değildir
Mark Schultheiss

Yanıtlar:


-26

Önceki kod

<p class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></p>

Bu yüzden bunu

<div class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></div>

Kolay düzeltme yapıldı. Ve yukarıdaki kod için CSS

.item {
    position: relative;
    border: 1px solid green;
    height: 30px;
}

.item .name {
    position: absolute;
    top: 0px;
    left: 0px;
}

.item .price {
    position: absolute;
    right: 0px;
    bottom: 0px;
}

Div etiketi başka öğeler içerebilir. P bunu yapmaya zorlanmamalıdır.


3
Ne demek istediğini gerçekten bilmiyorum. “Sitede”: hangi site? “… Çalışmasını sağlamak”: 'iş' ne anlama geliyor? Amaçlanan görüntü oluşturma nedir?
Marcel Korpel

4
Bana tamamen mantıksız Bu sesler: pelementler olabilir diğer inline elemanlarını (HTML 5 Spec görüşmelere ihtiva phrasing elemanları (7.3) ), bunlardan spandiğerleri arasında bunlardan biridir. Dahası, bu OP'nin sorusuna bir cevap değildir: pve arasındaki fark hakkında hiçbir şey söylemez div. Ve lütfen okuyun Yorum yanıtları nasıl çalışır?
Marcel Korpel

@MarcelKorpel Neden kabul edilen cevap bu? Tartışmak değil, neden tutarsızlık olduğunu merak etmek.
Anshul

3
@Anshul Görünüşe göre OP için bir şey çalıştı, ama soruya cevap vermiyor. Ayrıca bu cevabın puanına bakınız: -16 şu anda. Bilmiyorsanız: OP bir yanıtı kabul edebilen tek kişidir, oysa topluluktaki herkes bir cevabı aşağı veya yukarı oylayabilir.
Marcel Korpel

Geç nefret partiye ancak: <p>etiketleri çok sık gibi diğer elementleri içeren <strong>veya <em>bir içeriği vb <p>metin paragrafı: Adından da anlaşılacağı neyi olmalıdır etiketi. Metin paragrafları genellikle ek işaretleme içerir. Uzaktan alışılmadık veya yanlış bir şey bile yok.
Dave Newton

297

Bunlar sahip semantik farkı - bir <div>eleman a ise veri bir kap tanımlamak için tasarlanmış<p> element içeriği bir paragraf açıklamak için tasarlanmıştır.

Anlambilim tüm farkı yaratır. HTML bir biçimlendirme dilidir, yani içeriği biçimlendirme tüketicisi için anlamlı bir şekilde "işaretlemek" için tasarlanmıştır. Çoğu geliştirici, belgenin anlambiliminin, tarayıcıların bu öğelere uyguladığı varsayılan stiller ve oluşturma olduğuna inanır, ancak durum böyle değildir.

İçeriğinizi işaretlemek için seçtiğiniz öğelerin içeriği tanımlaması gerekir . Belgenizi nasıl görünmesi gerektiğine göre işaretlemeyin - ne olduğuna göre işaretleyin.

Genel bir konteynere ihtiyacınız varsa tamamen yerleşim amacıylasonra a <div>. Bir içerik paragrafını tanımlamak için bir öğeye ihtiyacınız varsa a öğesini kullanın <p>.

Not: Önemli olan hem anlamak <div>ve <p>olan blok seviyesinden elemanların çoğu tarayıcının benzer şekilde onları tedavi edeceği anlamına gelir.


Deneyimlerim, bir içerik parçasını başka bir içerik parçasından farklı bir şekilde düzenlemek istiyorsanız, bu ikisinin anlamsal olarak farklı olması ve dolayısıyla yine de işaretlenmesi gerektiğidir . OTOH, semantik olarak farklı değilse , muhtemelen birlikte yerleştirilmelidirler. Her iki durumda da, yerleşim amaçları için bir öğe eklemeye gerek yoktur, çünkü ilk durumda başlangıç ​​için zaten orada olmalıydı ve ikinci durumda herhangi bir düzen yoktur. Ama sonra tekrar, ben bir sadakatim ve sitelerim her zaman 1995'e geri dönüş gibi görünüyor.
Jörg W Mittag

5
<p>"İçerik paragrafı" için kullanmayı söylediğinizde , içeriğin harf ve kelime biçiminde olması gerekir mi? <p>Görüntüler gibi başka bir tür içeriği tanımlamak için hiç kullandınız mı?
drs

1
@drs: <p> için izin verilen içerik, normal karakter verileriyle karıştırılan ifade öğelerinden oluşan "Kelime öbeği içeriği" dir. Btw, resimler ifade öğelerine aittir, böylece bunları <p> içinde kullanabilirsiniz. Kaynaklar: w3.org/TR/html-markup/p.html ve w3.org/TR/html-markup/common-models.html#common.elem.phrasing . HTH
Paolo

2
Div'leri kullanarak p'leri yuvalayamayacağınızı söylemeyi unutuyorsunuz. "Düzen bilgilerini html'ye dahil etme" türüne gelince: nasıl görünmesi gerektiği ile uğraşmadan bir html dosyası yazmak mümkün değildir. Div'lerin sırasını ve iç içe yerleşimini seçmeniz, sayfanızı parçalayan ve yeniden yapılandıran bir javascript yazmazsanız, her zaman bir etkisi olacaktır. Bu nedenle div'ı " yalnızca yerleşim amacıyla genel bir kapsayıcı" olarak görmek doğru ifadedir.
masterxilo

Bunun yerine kullanmayı divtercih edersem ne olur p?
Melab

66

Tüm iyi yanıtlar, ancak henüz bahsetmediğim bir fark var ve tarayıcılar bunları varsayılan olarak bu şekilde oluşturuyor. Büyük web tarayıcıları <p>paragrafın üstünde ve altında kenar boşluğu olan bir etiket oluşturur . Bir <div>etiket hiç kenar boşluğu olmadan oluşturulacaktır.


10
Oluşturmayı kontrol etmek istiyorsanız, CSS kullanıyor olmalısınız. Tarayıcıların mevcut varsayılan değerlerine güvenmeyin.
Mekanik salyangoz

15
Soru DIV ve P etiketleri arasında ne gibi farklılıklar olduğunu sordu. Bu, CSS sıfırlama kullanmayan herkes için önemli bir özelliktir, özellikle de sadece bir tarayıcı kullanan biri için açık olmayabilir.
ceejayoz

3
Açıklama için teşekkürler. P etiketi kullanarak metin üst (ve muhtemelen alt) kenar boşluğu ile görünmesine neden oldu çünkü bu tam bir fark arıyordu, bu yüzden bu alan nereden geliyor merak ediyordum. Uzaydan kurtulmak gerekiyordu.
WhatsInAName

@ceejayoz marjı? bunu nasıl görebiliriz?
JAVA

58

<p> bir paragrafı belirtir ve anlamsal anlamı vardır.

<div> diğer içerikler için bir blok konteynırdır.

İçine girebilecek her şey bir <p>olabilir <div>ama tersi doğru değildir. <div>etiketlerinde alt öğe olarak alt öğe öğeleri bulunabilir. <p>öğeler olamaz.

Tae bir bakış HTML DTD'ye .

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->
<!ELEMENT P - O (%inline;)*            -- paragraph -->

3
Yani bir <p> içinde <h1> olamaz?
Koray Tugay

8

İki unsur arasındaki tek fark anlambilimdir. Her iki öğe de varsayılan olarak CSS kuralı görüntülemeye sahiptir: blok (dolayısıyla blok düzeyi) kendilerine uygulanır; başka bir şey yok (bazı durumlarda biraz fazladan marj hariç). Ancak, daha önce de belirtildiği gibi, ikisi de anlambilim açısından büyük ölçüde farklıdır.

<p>Adından da anlaşılacağı gibi biraz elemanı, paragraf içindir. Böylece,<p> paragraf metninin bloklarını oluşturmak istediğinizde kullanılmalıdır.

<div>O anlam anlamsız ve bir blok-gerektirebilir genellikle herhangi bir şey için kullanılabilir, çünkü en yaygın, insanlar düzenleri içinde kullanmak - eleman, ancak, hiçbir anlamsal anlam ve dolayısıyla genel bir blok seviyesinden eleman olarak kullanılabilir başka bir şey geçmedi düzey öğesi.

Daha fazla ayrıntı için bağlantı


3
Bu son cümleye gerek yok. Bu sitedeki soruların neredeyse tamamı googled olabilir, ancak mesele bu değil. Mesele, gelecekte aynı sorulara sahip geliştiriciler için bir kaynak oluşturmaktır.
nickf

ya, ama bazı ilgili bilgilerle bir tartışma başlatabilirdi, herhangi bir şekilde düzenleyecektir
Ashish Agarwal

1
Hem p hem de div blok öğeleri olduğundan, neden bir h1 öğesi bir div içinde yuvalandığında, stilleri devralır, ancak ap içinde yuvalandığında alışkanlık olur? Teşekkür ederim
Dönüş-1

@ Return-1 Sizin durumunuzda tam olarak ne olduğunu bilmiyorum, ancak h1, içeriği ifade etmeyen ve bu nedenle paragraf içinde izin verilmeyen bir başlıktır . Basılı metni düşünün - başlıklar ve paragraflar içerir, ancak başlıklar paragrafların bir parçası değildir.
Oskar Berggren

7

DIV , diğer DIV elemanları dahil olmak üzere başka herhangi bir blok veya satır içi eleman içerebilen genel bir blok seviyesi konteyneriyken, P paragrafları (metin) sarmaktır.


7

W3.org tarafından tasarlanan standardı görmek daha iyi olabilir. İşte adresi: http://www.w3.org/

Bir "DIV" etiketi "P" etiketi sarabilirken, bir "P" etiketi "DIV" etiketi sarar olamaz-şimdiye kadar bu farkı biliyorum. Başka farklılıklar da olabilir.


5

DIVBir gruplama öğesi olarak düşünün . Öğeleri bir DIV öğesine koyarsınız, böylece hizalamalarını ayarlayabilirsiniz

Oysa "p"sadece yeni bir paragraf oluşturmaktır.


3

<p> bir paragrafı temsil eder ve <div> bir 'bölünmeyi' temsil eder, asıl fark div'lerin anlamsal olarak 'anlamsız' olması, burada bir <p> olarak metnin kendisiyle ilgili bir şeyi temsil etmesi beklenir.

Örneğin iç içe geçmiş <p> ler kullanmak istemezsiniz, çünkü bu çok anlamsal anlam ifade etmez (alıntılar hariç) İnsanlar sayfa düzeni için iç içe geçmiş <div> ler kullanırlar.

Wikipedia'ya göre

HTML'de, belgenin bölümlerinin diğer HTML öğeleri tarafından anlamsal olarak tanımlanamadığı durumlarda span ve div öğeleri kullanılır.


2

Bir petiketi genellikle metin için kullanılan bir paragraf içindir. Bir divetiket bölme içindir ve genellikle metin bölümleri oluşturmak için kullanılır.


2

<p> anlamsal olarak metin, paragraflar genellikle kullanılır.

<div>bir web sayfasındaki bir blok veya alan için kullanılır. Örneğin, bir başlık alanının oluşturulması için kullanılabilir.

Yapabilirlerdi muhtemelen birbirinin yerine kullanılabilir, ancak atlatma.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.