আমি জানি এটি একটি পুরানো সমস্যা, আমি এটি বহুবার এসেছি। সমস্যাটি হ'ল এখানে সমস্ত ফিক্স হ্যাক যাঁর সম্ভবত অনিচ্ছাকৃত পরিণতি ঘটতে পারে।
প্রথমে, মূল সমস্যাটির সহজ ব্যাখ্যা রয়েছে। যেভাবে মার্জিনটি ভেঙে চলেছে সেই কারণে, যদি কোনও ধারকের অভ্যন্তরের প্রথম উপাদানটির একটি শীর্ষ মার্জিন থাকে, তবে সেই শীর্ষটি মার্জিনটি প্যারেন্ট পাত্রে নিজেই কার্যকরভাবে প্রয়োগ করা হয়। আপনি নিম্নলিখিতটি দ্বারা নিজের দ্বারা এটি পরীক্ষা করতে পারেন:
<div>
<h1>Test</h1>
</div>
কোনও ডিবাগারে, এটি খুলুন এবং ডিভটি হোভার করুন। আপনি লক্ষ্য করবেন যে ডিভটি নিজেই সেখানে স্থাপন করা হয়েছে যেখানে এইচ 1 এলিমেন্টের শীর্ষ-মার্জিন থামে । এই আচরণটি ব্রাউজার দ্বারা উদ্দিষ্ট।
সুতরাং এখানে বেশিরভাগ পোস্ট যেমন অদ্ভুত হ্যাকগুলি অবলম্বন না করে এটির একটি সহজ সমাধান রয়েছে (কোনও অপমানের উদ্দেশ্যে নয়, এটি কেবল সত্য) - কেবল আসল ব্যাখ্যাটিতে ফিরে যান - ...if the first element inside a container has a top margin...
- এর অনুসরণ করে আপনার অতএব প্রয়োজন একটি ধারক মধ্যে প্রথম উপাদান না একটি শীর্ষ মার্জিন আছে। ঠিক আছে, তবে আপনার ডকুমেন্টে শব্দার্থে হস্তক্ষেপ না করে এমন উপাদানগুলি না যুক্ত আপনি কীভাবে এটি করবেন?
সহজ! ছদ্ম-উপাদান! আপনি এটি ক্লাস বা প্রাক-সংজ্ঞায়িত মিক্সিনের মাধ্যমে করতে পারেন। একটি :before
ছদ্ম-উপাদান যুক্ত করুন:
ক্লাসের মাধ্যমে সিএসএস:
.top-margin-fix:before {
content: ' ';
display: block;
width: 100%;
height: .0000001em;
}
এটির সাহায্যে উপরের মার্কআপ উদাহরণটি অনুসরণ করে আপনি নিজের ডিভটি পরিবর্তন করতে পারবেন:
<div class="top-margin-fix">
<h1>Test</h1>
</div>
কেন এই কাজ করে?
একটি ধারক মধ্যে প্রথম উপাদান, যদি এটির শীর্ষ-মার্জিন না থাকে, তবে পরবর্তী উপাদানটির শীর্ষের মার্জিনের সূচনার অবস্থানটি নির্ধারণ করে। একটি যোগ করে :before
সিউডো-উপাদান, ব্রাউজার আসলে পিতা বা মাতা ধারক মধ্যে একটি অ-শব্দার্থিক (অন্য কথায়, এসইও জন্য ভালো) উপাদান যোগ করে সামনে আপনার প্রথম উপাদান।
প্র: কেন উচ্চতা: .0000001 মিমি?
উ: ব্রাউজারটির মার্জিন এলিমেন্টটি নীচে নামানোর জন্য একটি উচ্চতা প্রয়োজন। এই উচ্চতাটি কার্যকরভাবে শূন্য, তবে এটি আপনাকে প্যারেন্ট পাত্রে নিজেই প্যাডিং যুক্ত করতে দেয়। যেহেতু এটি কার্যকরভাবে শূন্য, সুতরাং এটির ধারকটির লেআউটে কোনও প্রভাব পড়বে না। সুন্দর।
অদ্ভুত প্রদর্শন শৈলী যুক্ত করার পরিবর্তে এই সমস্যাটি সমাধানের জন্য আপনি এখন ক্লাস (বা আরও ভাল, SASS / LSS এ, একটি মিক্সিন!) যুক্ত করতে পারেন যা যখন আপনি আপনার উপাদানগুলির সাথে অন্যান্য জিনিস করতে চান, উদ্দেশ্যমূলকভাবে উপাদানগুলির উপর মার্জিনকে সরিয়ে ফেলেন এবং / অথবা প্যাডিং বা অদ্ভুত অবস্থান / ভাসা শৈলীর সাথে এটি প্রতিস্থাপন করা যা সত্যই এই সমস্যাটি সমাধান করার উদ্দেশ্যে নয়।
overflow:hidden
90% ক্ষেত্রে ভাল।