點燈坊

失くすものさえない今が強くなるチャンスよ

使用 float 設定文繞圖

Sam Xiao's Avatar 2021-01-31

文繞圖為實務上常見需求,若只使用 <img><div>,則 <img><div> 會各自一行顯示,可使用 CSS 對 <img>設定 float 達成文繞圖。

Version

CSS 3

Text with Image

wrap001

一行圖片一行文字,沒有達成文繞圖。

<template>
  <img src="./assets/ilta.png" alt="ilta">
  <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus!Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab aspernatur cum, deserunt ea et eum excepturi fugiat harum ipsa ipsum maxime nam quam. Esse ex, ipsam nam quas reiciendis similique?</div>
  <img src="./assets/ilta.png" alt="ilta">
  <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus!Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab aspernatur cum, deserunt ea et eum excepturi fugiat harum ipsa ipsum maxime nam quam. Esse ex, ipsam nam quas reiciendis similique?</div>
</template>

<img><div> 之前且沒有搭配任何 CSS,由於 <div> 是 block element,因此文字會換行,無法達成文繞圖。

Wrap Text Around Image

wrap000

希望能文繞圖,且將圖片放在文字左側或右側。

<template>
  <img src="./assets/ilta.png" class="leftImg" alt="ilta">
  <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus!Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab aspernatur cum, deserunt ea et eum excepturi fugiat harum ipsa ipsum maxime nam quam. Esse ex, ipsam nam quas reiciendis similique?</div>
  <img src="./assets/ilta.png" class="rightImg" alt="ilta">
  <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus!Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci deserunt laudantium optio, quidem reprehenderit sed soluta vitae? Accusamus aspernatur ea laboriosam modi, nihil obcaecati possimus quam ratione, tempore, tenetur voluptate? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio itaque iusto labore molestiae nostrum totam, voluptatum! Aperiam cum debitis deleniti dolorem error, in labore magnam minus molestias nihil placeat Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium aspernatur aut dignissimos explicabo laboriosam maiores minima necessitatibus numquam odit pariatur placeat possimus qui recusandae rem, sapiente totam ut voluptas. Temporibus! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab aspernatur cum, deserunt ea et eum excepturi fugiat harum ipsa ipsum maxime nam quam. Esse ex, ipsam nam quas reiciendis similique?</div>
</template>

<style>
.leftImg {
  float: left;
  margin-right: 20px;
}

.rightImg {
  float: right;
  margin-left: 20px;
}
</style>

第 9 行

.leftImg {
  float: left;
  margin-right: 20px;
}
  • float: left:圖片的空間會消失,變成浮在畫面左側,因此達成文繞圖

  • margin-right: 20px:讓圖片與文字有間隔增加美觀

14 行

.rightImg {
  float: right;
  margin-left: 20px;
}
  • float: right:圖片的空間會消失,變成浮在畫面右側,因此達成文繞圖
  • margin-left: 20px:讓圖片與文字有間隔增加美觀

Conclusion

  • 當設定文繞圖時,別忘了 <img> 要放在 <div> 之前

Reference

MDN, float