Powiedziałbym wszystko, co powiedział @BoltClock; on robi wiele dobrych punktów.
Dodam również, że ponieważ inline-block
jest traktowany jako tekst, otaczająca biała przestrzeń jest również traktowana jako tekst i dlatego wchodzi w grę w taki sposób, że nie będzie dla elementu block
. To często przyciąga ludzi, gdy próbują użyć układu inline-block
. Jest to prawdopodobnie największa "gotcha" do korzystania z inline-block
.
Kolejny nieco bardziej subtelny punkt dotyczy konkretnie w twoim przypadku, tj. Przy ustawieniu width:100%
. W takim przypadku należy wystrzegać się modelu skrzynki, którego używasz, ponieważ standardowy model pudełkowy umieszcza twoje granice, marginesy i marginesy poza szerokością elementu. Zatem jeśli użyjesz obramowań, wypełnienia lub marginesu, twój element zajmie przestrzeń większą niż 100%.
Ten punkt odnosi się w równym stopniu do block
i inline-block
elementów, ale jest bardziej prawdopodobne ze inline-block
ponieważ różnica jest taka, że block
zwykle nie muszą być ustawione na width:100%
ponieważ domyślnie poszerzyć wypełnić szerokość tak, i bez modelu pudełkowego, który powoduje, że przesuwa się poza krawędź.
Aby tego uniknąć, można przełączyć model skrzynki za pomocą box-sizing:border-box
, tak aby ramki itp. Zostały umieszczone wewnątrz pudełka, a tym samym, jeśli poprosisz o with:100%
, dostaniesz to. Aby uzyskać więcej informacji, patrz MDN box-sizing page.
Zobacz przykład demonstrujący najsilniejszą różnicę: http://jsbin.com/icasem/1/edit –