আমি কিছু দুর্দান্ত historical তিহাসিক প্রসঙ্গ সরবরাহের জন্য জোশ 3736 এর উত্তরের প্রশংসা করতে চাই । যদিও এটি ভালভাবে বর্ণিত হয়েছে, এই প্রশ্নটি জিজ্ঞাসা করার পরে প্রায় পাঁচ বছরে CSS ল্যান্ডস্কেপ পরিবর্তিত হয়েছে। এই প্রশ্নটি যখন জিজ্ঞাসা করা px
হয়েছিল , সঠিক উত্তর ছিল, কিন্তু আজকের এই সত্যটি আর রাখে না।
tl; dr: userem
ইউনিট ওভারভিউ
Icallyতিহাসিকভাবে px
ইউনিটগুলি সাধারণত একটি ডিভাইস পিক্সেল উপস্থাপন করে। উচ্চতর এবং উচ্চতর পিক্সেল ঘনত্বযুক্ত ডিভাইসগুলির সাথে এটি আর অনেকগুলি ডিভাইসের জন্য ধারণ করে না, যেমন অ্যাপলের রেটিনা প্রদর্শন সহ।
rem
ইউনিটগুলি r oot em আকারকে উপস্থাপন করে । এটি font-size
যাই হোক না কেন ম্যাচ :root
। এইচটিএমএলের ক্ষেত্রে এটি <html>
উপাদান; এসভিজির জন্য, এটি <svg>
উপাদান। font-size
প্রতিটি ব্রাউজারে ডিফল্ট হয় * 16px
।
লেখার সময়, rem
প্রায় 98% ব্যবহারকারী দ্বারা সমর্থিত । আপনার সম্পর্কে যে অন্যান্য 2% চিন্তিত থাকেন, তবে আমি তোমাদের মনে করিয়ে দেব যে মিডিয়া প্রশ্নের করছে এছাড়াও ব্যবহারকারীদের প্রায় 98% দ্বারা সমর্থিত ।
ব্যবহারের উপর px
ইন্টারনেটে বেশিরভাগ সিএসএস উদাহরণ px
মান ব্যবহার করে কারণ এগুলি ডি-ফ্যাক্টো স্ট্যান্ডার্ড। pt
, in
এবং অন্যান্য ইউনিট বিভিন্ন ক্ষেত্রে তত্ত্ব ব্যবহার করা যেতে পারে , তবে তারা ছোট মানগুলি ভালভাবে পরিচালনা করতে পারে না কারণ আপনাকে দ্রুত ভগ্নাংশগুলি অবলম্বন করতে হবে, যা টাইপ করতে দীর্ঘতর ছিল এবং এর পক্ষে যুক্তিযুক্ত হতে আরও শক্ত।
সঙ্গে আপনি একটি পাতলা সীমান্ত চেয়েছিলেন px
আপনি ব্যবহার করতে পারে 1px
, সঙ্গে pt
আপনি ব্যবহার করতে প্রয়োজন চাই 0.75pt
সামঞ্জস্যপূর্ণ ফলাফলের জন্য, এবং যে শুধু খুব সুবিধাজনক নয়।
ব্যবহারের উপর rem
rem
এর ডিফল্ট মান 16px
এর ব্যবহারের জন্য খুব শক্ত যুক্তি নয়। লিখন 0.0625rem
হয় খারাপ লেখা চেয়ে 0.75pt
, তাই কেন কেউ ব্যবহার করেন rem
?
rem
অন্যান্য ইউনিটগুলির থেকে লাভের জন্য দুটি অংশ রয়েছে ।
- ব্যবহারকারীর পছন্দগুলি সম্মানিত হয়
- আপনি যা চান তার আপাত
px
মান পরিবর্তন rem
করতে পারেন
ব্যবহারকারী পছন্দসমূহ সম্মান
কয়েক বছর ধরে ব্রাউজার জুম অনেক পরিবর্তন হয়েছে। .তিহাসিকভাবে অনেক ব্রাউজার কেবল মাত্রা বাড়িয়ে তুলত font-size
, কিন্তু ওয়েবসাইটগুলি যখন বুঝতে পেরেছিল যে তাদের সুন্দর পিক্সেল-নিখুঁত ডিজাইনগুলি যখন কেউ জুম বা আউট করেছে তখন যে কোনও সময় ভেঙে যাচ্ছে। এই মুহুর্তে, ব্রাউজারগুলি পুরো পৃষ্ঠাটি স্কেল করে, তাই ফন্ট-ভিত্তিক জুমিং চিত্রের বাইরে।
ব্যবহারকারীর ইচ্ছাকে সম্মান করা চিত্রের বাইরে নয়। কেবলমাত্র কোনও ব্রাউজার 16px
ডিফল্ট হিসাবে সেট করা থাকে , তার অর্থ এই নয় যে কোনও ব্যবহারকারী তাদের পছন্দ পছন্দগুলি পরিবর্তন করতে 24px
বা 32px
স্বল্প দৃষ্টি বা দুর্বল দৃশ্যমানতার জন্য সংশোধন করতে পারবেন না (প্রাক্তন স্ক্রীন ঝলক)। যদি আপনি নিজের ইউনিটগুলি rem
অবলম্বন করেন তবে উচ্চতর ফন্ট-আকারের যে কোনও ব্যবহারকারী আনুপাতিকভাবে বড় সাইট দেখতে পাবেন। সীমানা বড় হবে, প্যাডিং বড় হবে, মার্জিন বড় হবে, সবকিছু তরলভাবে মাপবে scale
আপনি যদি আপনার মিডিয়া প্রশ্নগুলিকে ভিত্তি করে থাকেন তবে আপনি rem
এটিও নিশ্চিত করতে পারেন যে আপনার ব্যবহারকারীরা যে সাইট দেখছেন সেগুলি তাদের স্ক্রিনের সাথে খাপ খায়। ব্যবহারকারীর সঙ্গে font-size
সেট 32px
একটি উপর 640px
ব্যাপক ব্রাউজার, কার্যকরভাবে যেমন একজন ব্যবহারকারী দেখানো আপনার সাইটের দেখবে 16px
একটি উপর 320px
ব্যাপক ব্রাউজার। একেবারে ব্যবহারে RWD জন্য কোন ক্ষতি নেই rem
।
আপাতত px
মান পরিবর্তন করা হচ্ছে
কারণ rem
উপর ভিত্তি করে তৈরি font-size
এর :root
নোড, আপনি কি পরিবর্তন করতে চান তাহলে 1rem
প্রতিনিধিত্ব করে, সব আপনাকে যা করতে হবে পরিবর্তন হয় font-size
:
:root {
font-size: 100px;
}
body {
font-size: 1rem;
}
<p>Don't ever actually do this, please</p>
আপনি যা করেন না কেন, :root
উপাদানটির font-size
কোনও px
মান নির্ধারণ করবেন না ।
আপনি সেট করেন তাহলে font-size
উপর html
একটি থেকে px
মান, আপনি একটি উপায় তাদের ফিরে পেতে ছাড়া ব্যবহারকারীর পছন্দগুলি দূরে প্রস্ফুটিত গেছেন।
আপনি যদি আপাত মান পরিবর্তন করতে চান তবে ইউনিটগুলি rem
ব্যবহার করুন %
।
এর জন্য গণিতটি যুক্তিসঙ্গতভাবে সরাসরি-সামনের দিকে।
আপাত ফন্ট সাইজ :root
হয় 16px
, কিন্তু বলতে আমরা এটি পরিবর্তন করতে চান করতে দেয় 20px
। আমাদের যা করতে হবে তা হ'ল 16
কিছু মান পেতে হবে 20
।
আপনার সমীকরণ সেট আপ করুন:
16 * X = 20
এবং এর জন্য সমাধান করুন X
:
X = 20 / 16
X = 1.25
X = 125%
:root {
font-size: 125%;
}
<p>If you're using the default font-size, I'm 20px tall.</p>
বহুগুণে 20
সমস্ত কিছু করা এত দুর্দান্ত নয়, তবে একটি সাধারণ পরামর্শ হল আপাত আকারের rem
সমান করা 10px
। এর জন্য যাদু নম্বরটি 10/16
যা 0.625
, বা 62.5%
।
:root {
font-size: 62.5%;
}
<p>If you're using the default font-size, I'm 10px tall.</p>
এখন সমস্যাটি হচ্ছে আপনার font-size
বাকী পৃষ্ঠাটির জন্য ডিফল্টটি খুব ছোট সেট করা হয়েছে তবে এর জন্য একটি সহজ ফিক্স রয়েছে: font-size
এটি body
ব্যবহার করে সেট করুন rem
:
:root {
font-size: 62.5%;
}
body {
font-size: 1.6rem;
}
<p>I'm the default font-size</p>
এটি লক্ষণীয় গুরুত্বপূর্ণ যে স্থানে এই সামঞ্জস্যের সাথে, আপাত মানটির অর্থ rem
হ'ল 10px
যার অর্থ আপনি যে কোনও মান লিখেছেন সেটি একটি দশমিক স্থানকে ধাক্কা দিয়ে px
সরাসরি রূপান্তর করতে পারে rem
।
padding: 20px;
পরিণত হয়
padding: 2rem;
আপনার চয়ন করা আপাত ফন্ট-আকার আপনার উপর নির্ভর করে তাই আপনি যদি চান তবে কোনও কারণ নেই যা আপনি ব্যবহার করতে পারবেন না:
:root {
font-size: 6.25%;
}
body {
font-size: 16rem;
}
এবং 1rem
সমান আছে 1px
।
সুতরাং আপনার কাছে এটি রয়েছে, আপনার সিএসএসকে অতিরিক্ত জটিলতা এড়াতে ব্যবহারকারীর শুভেচ্ছাকে সম্মান করার একটি সহজ সমাধান।
দাঁড়াও, তাহলে কী ধরা?
আমি ভীত ছিলাম যে আপনি এটি জিজ্ঞাসা করতে পারেন। আমি যতটা ভান করতে চাই rem
তা যাদু এবং সমস্ত কিছু সলভ করে, এখনও কিছু নোটের বিষয় রয়েছে। আমার মতে কিছু ভাঙ্গার বিষয় নয়, তবে আমি তাদের ফোন করব যাতে আপনি বলতে পারেন না যে আমি আপনাকে সতর্ক করেছিলাম না।
মিডিয়া ক্যোয়ারী (ব্যবহার em
)
আপনি যে প্রথম সমস্যার সাথে চালাবেন তার মধ্যে একটিতে rem
মিডিয়া প্রশ্নগুলি জড়িত। নিম্নলিখিত কোড বিবেচনা করুন:
:root {
font-size: 1000px;
}
@media (min-width: 1rem) {
:root {
font-size: 1px;
}
}
এখানে rem
মিডিয়া-ক্যোয়ারী প্রযোজ্য কিনা এবং মিডিয়া ক্যোয়ারী এর মানের উপর নির্ভর করে পরিবর্তনের মান নির্ভর করে rem
, তাই পৃথিবীতে কী চলছে?
rem
মিডিয়া ক্যোয়ারিগুলিতে প্রাথমিক মান ব্যবহার font-size
এবং করা উচিত নয় (সাফারি অধ্যায় দেখুন) একাউন্টে কোনো পরিবর্তন যে ঘটে থাকতে পারে নিতে font-size
এর :root
উপাদান। অন্য কথায়, এটির আপাত মান সর্বদা 16px
।
এটি কিছুটা বিরক্তিকর, কারণ এর অর্থ হল যে আপনাকে কিছু ভগ্নাংশ গণনা করতে হবে তবে আমি খুঁজে পেয়েছি যে সর্বাধিক সাধারণ মিডিয়া অনুসন্ধানগুলি ইতিমধ্যে 16 এর গুণাবলীযুক্ত মানগুলি ব্যবহার করে।
| px | rem |
+------+-----+
| 320 | 20 |
| 480 | 30 |
| 768 | 48 |
| 1024 | 64 |
| 1200 | 75 |
| 1600 | 100 |
অতিরিক্ত হিসাবে আপনি যদি সিএসএস প্রিপ্রোসেসর ব্যবহার করেন তবে আপনি আপনার মিডিয়া ক্যোয়ারী পরিচালনা করতে মিক্সিন বা ভেরিয়েবল ব্যবহার করতে পারেন, যা পুরোপুরি ইস্যুটি মাস্ক করবে।
আফ্রিকায় শিকার অভিযান
দুর্ভাগ্যক্রমে সাফারি সহ একটি পরিচিত বাগ রয়েছে যেখানে :root
ফন্ট-আকারের পরিবর্তনগুলি rem
মিডিয়া ক্যোয়ারী রেঞ্জের জন্য গণনা করা মানগুলিকে পরিবর্তন করে । যদি :root
উপাদানটির ফন্ট-আকার কোনও মিডিয়া ক্যোয়ারির মধ্যে পরিবর্তিত হয় তবে এটি কিছু অদ্ভুত আচরণের কারণ হতে পারে । : সৌভাগ্যবশত ফিক্স সহজ ব্যবহার em
মিডিয়া প্রশ্নের জন্য ইউনিট ।
প্রসঙ্গ স্যুইচিং
আপনি যদি বিভিন্ন বিভিন্ন প্রকল্পের মধ্যে স্যুইচ করেন তবে এটি সম্ভবত সম্ভব যে আপাতর ফন্ট-আকারের rem
বিভিন্ন মান থাকবে। একটি প্রকল্পে, আপনি সম্ভবত 10px
অন্য কোন প্রকল্পে যেখানে আপাত আকার হতে পারেন তার একটি আপাত আকার ব্যবহার করছেন 1px
। এটি বিভ্রান্তিকর হতে পারে এবং সমস্যার কারণ হতে পারে।
এখানে আমার একমাত্র সুপারিশটি হ'ল একটি আপাত আকারে 62.5%
রূপান্তরিত rem
হওয়ার জন্য লেগে থাকা 10px
, কারণ এটি আমার অভিজ্ঞতাতে বেশি সাধারণ।
সিএসএস লাইব্রেরি ভাগ করা হয়েছে
আপনি যদি এমন কোনও সাইট ব্যবহার করেন যা আপনি নিয়ন্ত্রণ করেন না এমন কোনও সিএসএস লিখছেন যেমন এমবেডেড উইজেটের জন্য, আপাত আকারের কী rem
হবে তা জানার সত্যিই ভাল উপায় নেই । যদি এটি হয় তবে অবিরতভাবে ব্যবহার চালিয়ে যান px
।
আপনি যদি এখনও ব্যবহার করতে চান rem
তবে এর আকারের আকারের জন্য স্কেলিংকে ওভাররাইড করার জন্য একটি পরিবর্তনশীল সহ স্টাইলশিটের স্যাস বা LSS সংস্করণ প্রকাশের বিষয়টি বিবেচনা করুন rem
।
* আমি কাউকে ব্যবহার থেকে দূরে রাখতে চাই না rem
, তবে প্রতিটি ব্রাউজার 16px
ডিফল্টরূপে ব্যবহার করে তা আমি আনুষ্ঠানিকভাবে নিশ্চিত করতে সক্ষম হইনি । আপনি দেখুন, প্রচুর ব্রাউজার রয়েছে এবং একটি ব্রাউজারের পক্ষে এতটুকু বলা, বলা 15px
বা বলা যায় এমন কিছু এতদূর মুছে ফেলা উচিত নয় 18px
। পরীক্ষায়, তবে আমি এমন একটি উদাহরণও দেখিনি যেখানে ডিফল্ট সেটিংস ব্যবহার করে কোনও ব্রাউজারের ডিফল্ট সেটিংস ব্যবহার করে অন্য কোনও মান থাকে 16px
। যদি আপনি এরকম উদাহরণ পান তবে দয়া করে এটি আমার সাথে ভাগ করুন।