قراره بهتون تضمین موفقیت در برنامه‌نویسی و کلی آفر ویژه بدیم 😎 (برای شروع کلیک کن 👉)
۰ ثانیه
۰ دقیقه
۰ ساعت
۷ سحر پاشائی
right and left align-using float
جامعه Html & CSS ایجاد شده در ۰۷ دی ۱۴۰۱

درود. وقت بخیر

من div با کلاس right رو با استفاده از position‌ها right align کردم، و div با کلاس right-usingFloat رو با استفاده از float.

اما اینا افتادن رو هم با این که از clearfix استفاده کردم!

متاسفانه سایت codepen هم دیگه باز نمی‌شه و فایل هم اینجا آپلود نمی‌شه کدهارو مجبور شدم همینجا بذارم?‍♀️

DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Documenttitle>
    <link rel="stylesheet" href="style.css" />
  head>
  <body>
    
    <h2><mark>Alignmark>h2>
    <div class="center">
      <p>Hello world!p>
    div>
    <img src="../img/img_forest.jpg" alt="" />
    
    <div class="right">
      <p>
        Lorem ipsum dolor sit amet consectetur, adipisicing elit. Odio, quidem
        explicabo enim qui, itaque rerum harum, sint similique saepe nemo
        quisquam blanditiis ad labore natus! Corrupti a ex labore quasi!
      p>
    div>
    
    <div class="right-usingFloat clearfix">
      <p>
        Lorem ipsum dolor sit amet consectetur, adipisicing elit. Odio, quidem
        explicabo enim qui, itaque rerum harum, sint similique saepe nemo
        quisquam blanditiis ad labore natus! Corrupti a ex labore quasi!
      p>
    div>
  body>
html>
//CSS
.center {
  border: 3px solid hotpink;
  color: plum;
  width: 60%;
  padding: 10px;
  /* center align element */
  margin: auto;
  /* center align text */
  text-align: center;
}
img {
  display: block;
  margin: 10px auto;
  width: 40%;
}
/* left and right align element-using position */
.right {
  border: 3px solid hotpink;
  color: plum;
  width: 300px;
  padding: 10px;
  /* right align element */
  position: absolute;
  right: 0;
}
/* left and right align element-using float */
.right-usingFloat {
  border: 3px solid hotpink;
  color: plum;
  width: 300px;
  padding: 10px;
  /* right align element */
  float: right;
}
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

درود

موردی نداره اما متاسفانه این دو روز دسترسیم به سیستم برای اجرای کد محدود هست. تاپیک رو ذخیره کردم انشالله شنبه بررسی میکنم و پاسخ رو مجدد میفرستم.

ممنون بابت شکیبایی تون?

نازنین کریمی مقدم ۰۸ دی ۱۴۰۱، ۱۹:۴۴

سلام مجدد

کد رو بررسی کردم. طبق طراحی که در نظر گرفتید هر دو کلاس المان رو به سمت راست میبره و بدیهی هست که روی هم بیفتند. مشکلشون چیه؟ اگر میخواید میتونید مثلا div float رو چپ چین کنید که در طرف مقابل قرار بگیره.

نازنین کریمی مقدم ۱۰ دی ۱۴۰۱، ۰۶:۰۸

سلام.

مگه div عنصر بلاکی نیست و نباید زیرهم بیوفتن؟ چون از float استفاده کردیم ساختار بهم می‌ریزه و به همین دلیل از clearfix استفاده می‌کنیم تا درست عمل کنه

(؟)

من می‌خواستم div آخریه بیوفته لاین بعدی

و کلا هم درست کار نمی‌کنه هیچی، من 3 تا hr اضافه کردم الان(یکی لاین آخر کدم، یکی بین دوتا div و یکی قبل از div ای که کلاس right داره و این شد خروجی!:

(عکس رو آپلود کردم)

https://s2.uupload.ir/files/float_nrf5.png

سحر پاشائی ۱۱ دی ۱۴۰۱، ۰۴:۵۴

اینجا هم وقتی p رو با transform وسط قرار میدم(دومی) درست عمل می‌کنه اما با

padding یا line-height(اولی) ببینید چه شکلی شد:(متن از گوشه شروع شد لاین دوم از وسط!)


c9f8-center.png

سحر پاشائی ۱۱ دی ۱۴۰۱، ۰۵:۰۴

در حالت عادی بله div به صورت بلاک عمل میکنه و هر المان یک خط رو میگیره.

اما وقتی روی ویژگی position مانور میدید و مثلا اون رو absolute میگذارید اون خصیصه رو بازنویسی کردید و دیگه برقرار نیست. الان اگر در کلاس right پوزیشن رو کامنت کنید میبینید که مجدد یک سطر رو کامل میگیره.

دلیلی که از float استفاده میشه هم دقیقا همین مشکلات هست. حالا شما دو راه دارید: هردو div رو با float پیاده سازی کنید و یا کلاس right رو به این صورت اصلاح کنید که کل خط رو بگیره:

.right {
  border: 3px solid hotpink;
  color: plum;
  width: 100%;
  padding: 10px;
  /* right align element */
  position: relative;
  right: 0;
}
نازنین کریمی مقدم ۱۱ دی ۱۴۰۱، ۱۸:۴۰

هرجا از float استفاده کنیم حتما کار خراب می‌شه! ?‍♀️

کد رو اصلاح کردم، در دو سطر جداگونه افتادن اما سمت چپ سند قرار گرفت کلاس right

یه container هم براش در نظر گرفتم به اون پوزیشن relative و به کلاس right پوزیشن absolute و right 0 دادم، اینم فایده نداشت.

سحر پاشائی ۱۲ دی ۱۴۰۱، ۰۵:۱۱

بله کاملا درک میکنم.

انشالله جلوتر با flex آشنا میشید و دیگه این خاطرات بد تموم میشه :)

بهترین پاسخ
نازنین کریمی مقدم ۱۲ دی ۱۴۰۱، ۱۰:۲۱