iT邦幫忙

0

這樣的html怎麼使用CSS選取器呢??

  • 分享至 

  • xImage

說明

這是一個輪撥圖的練習!目前布局快完成了 CSS有點小疑問

下面附上html以及CSS提供參考 主要看CSS就可以了 感謝各位

html

   <div class="container">
      <div class="slide">
        <img
          src="https://i.imgur.com/FRRoupS.png"
          alt=""
          referrerpolicy="no-referrer"
        />
        <div class="content">
          <div class="name"></div>
          <div class="des"></div>
          <button>看更多</button>
        </div>
      </div>

      <div class="slide">
        <img
          class="ramen_img"
          src="https://i.imgur.com/kZPA5jO.png"
          alt=""
          referrerpolicy="no-referrer"
        />
        <div class="content">
          <div class="name"></div>
          <div class="des"></div>
          <button>看更多</button>
        </div>
      </div>

      <div class="slide">
        <img
          class="ramen_img"
          src="https://i.imgur.com/KHOTcNO.png"
          alt=""
          referrerpolicy="no-referrer"
        />
        <div class="content">
          <div class="name"></div>
          <div class="des"></div>
          <button>看更多</button>
        </div>
      </div>



// 總共六個吧  我就不貼那麼多了

下面是我嘗試的CSS效果

CSS

.slide img {
  width: 200px;
  height: 300px;
  display: inline-block;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  border-radius: 20px;
  box-shadow: 0 30px 45 px #505050;
}

.slide img:nth-child(1),
.slide img:nth-child(2) {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transform: translateY(0);
  border-radius: 0;
  box-shadow: none;
  z-index: 5;
}

.slide img:nth-child(3) {
  left: 50%;
  z-index: 10;
}

目標長相

會讓前面的圖變大 然後其他張排一排

問題

我發現我使用nth-child的效果好像錯誤了
並沒有辦法把圖片分開(?

原本的教材是使用background-image 但是因為我要使用imgur空間
需要referrerpolicy="no-referrer"才能讓圖片顯示出來 所以我改用img標籤
但接下來我這邊選取器似乎有錯誤!!?

想請教該怎麼修正CSS的部分才能排版呢?

新手無知,請教諸位前端前輩。
感謝!

我寫了一個版參考
https://beta.css.master.co/sandbox/oo2raahpc4ed0d
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

6
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2023-03-27 21:38:45
最佳解答

這是因為,你搞錯了子層定義。

.slide img

是指在.slide 的 img

<div class="slide" id="slide1">
        <img>
        <img>
        <img>
</div>

<div class="slide" id="slide2">
        <img>
        <img>      
</div>

則在slide1的.slide img。有3個

但在slide2的.slide img。只有2個

而搭配 nth-child(1) 其實就是取得第1個。

但你的html則是

<div class="slide">
        <img>
</div>
<div class="slide">
        <img>
</div>
<div class="slide">
        <img>
</div>

這樣你的 .slide 內,只會有一個 img 存在。

這時你的

.slide img:nth-child(2) {}
.slide img:nth-child(3) {}

其實是匹配不到的。

你要的是改變你想實際取到的位置。因該改成

.slide:nth-child(1) img {}
.slide:nth-child(2) img {}
.slide:nth-child(3) img {}

畢竟你實際要對的層級是.slide

jason07 iT邦新手 5 級 ‧ 2023-03-27 23:00:57 檢舉

天哪,您解說的也好清楚,兩個都想選最佳解答!
好感謝,已經學起來了!

jason07 iT邦新手 5 級 ‧ 2023-03-27 23:02:40 檢舉

最後決定選您,感謝你還細心解說~~~

2
小哈片刻
iT邦研究生 5 級 ‧ 2023-03-27 21:03:48

你要的應該是這樣

.slide:nth-child(1) img,
.slide:nth-child(2) img {
    ...
}
.slide:nth-child(3) img {
  ...
}
jason07 iT邦新手 5 級 ‧ 2023-03-27 23:01:20 檢舉

好尷尬,我好笨XD 謝謝解答!

jason07 iT邦新手 5 級 ‧ 2023-03-27 23:02:13 檢舉

謝謝您喔,您第一個出來回應,很感謝。這次先選另外一個大大,他解釋滿多的。
但您的答案簡潔明白也幫助到我很多!!

我要發表回答

立即登入回答