1

The following script displays exactly the same on each side of the screen. What I am trying to discover is how to group one set of dl/dt/dd definitions to be left side as normal with the dd below the dt as multiple lines but another group that will show the dt/dd on the same single lines.
I cannot figure out how to create two different dt/dd displays for the same page.

If you execute the script with the dl/dt/dd section commented out and then a second time with it in you will see the effects I'm trying to achieve, but both the multiple line and single line displays occurring on the same page as the same display. I'm thinking that there must be a way to define the CSS statements to act differently at different places on the same page. Obviously I would not do the displays in a real project, the side-by-side display is for question demonstration purposes only. Is there a way to do this?

I tried creating a class with the modified dl/dt/dd statements and then be referenced as a class. That approach does not seem to work.

<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0, user-scalable=yes"/>
<title> DL/DT/DD Demos </title>
<!-- link rel="stylesheet" href="common.css" media="screen" -->

<!-- See: https://medium.com/@jakehyer/css-grid-auto-fit-minmax-e54f99989668 -->
<style>
 main {
   display: grid;
   gap: 0.25rem;
 }
/* 12.5rem (9 boxes), 16 (7), 18 (6), 20 (5), 25 (4), 33rem (3), 40rem (2) all work */
/* */
 .gridCols9 {  grid-template-columns: repeat(auto-fit,minmax(12.5rem, 1fr)); }
 .gridCols7 {  grid-template-columns: repeat(auto-fit,minmax(16rem, 1fr)); }
 .gridCols6 {  grid-template-columns: repeat(auto-fit,minmax(18rem, 1fr)); }
 .gridCols5 {  grid-template-columns: repeat(auto-fit,minmax(20rem, 1fr)); }
 .gridCols4 {  grid-template-columns: repeat(auto-fit,minmax(25rem, 1fr)); }
 .gridCols3 {  grid-template-columns: repeat(auto-fit,minmax(33rem, 1fr)); }
 .gridCols2 {  grid-template-columns: repeat(auto-fit,minmax(40rem, 1fr)); }
/* */

 main > fieldset { border: 1px solid black; }
 .fontInfo {
   white-space: pre-wrap; 
   font-family: monospace;
 }
 h3 {
   background-color: lightgreen; text-align: center;
   font-size: 1.2rem; cursor: pointer;
   margin: 0; padding: 0; 
 }
 article { margin-top: 0; display: block; }

/* Following from: https://stackoverflow.com/questions/1713048/how-to-style-dt-and-dd-so-they-are-on-the-same-line */
/* Comment out following for entirely different display */
  dl {
   display: grid;
   grid-template-columns: max-content auto;
  }
  dt { grid-column-start: 1; }
  dd { grid-column-start: 2; }
/* */
</style>

</head><body>
<main class="gridCols4">
 <fieldset> <legend> Normal </legend>
  <article><h3>DL/DT/DD Display</h3></article>
  <dl>
   <dt>Mercury</dt>
   <dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
   <dt>Venus</dt>
   <dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
   <dt>Earth</dt>
   <dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
  </dl>
 </fieldset>

 <fieldset> <legend> Modified </legend>
  <article><h3>DL/DT/DD Display</h3></article>
  <dl class="singleLines">
   <dt>Mercury</dt>
   <dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
   <dt>Venus</dt>
   <dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
   <dt>Earth</dt>
   <dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
  </dl>
 </fieldset>

</main>
</body></html>
jmrker
  • 472
  • 4
  • 11
  • Can you show what you did with the additional class, that didn't seem to work? Trying to understand what you're going for. – James Dec 30 '21 at 06:39
  • Sure, I tried duplicating the dl/dt/dd CSS statements as: .singleLines { } and then used
    – jmrker Dec 30 '21 at 17:38
  • I also tried naming a '.normal' class with dl { }, dt { } and dt{ } to remove effects of .singleLines class and
    . Effect was no change to display again.
    – jmrker Dec 30 '21 at 18:44

1 Answers1

1

Maybe I'm missing something, but it seems like you just need to set the dt/dd's as child elements of dl with the '>' character. Here's an example showing the two different version views:

 main {
   display: grid;
   gap: 0.25rem;
 }
/* 12.5rem (9 boxes), 16 (7), 18 (6), 20 (5), 25 (4), 33rem (3), 40rem (2) all work */
/* */
 .gridCols9 {  grid-template-columns: repeat(auto-fit,minmax(12.5rem, 1fr)); }
 .gridCols7 {  grid-template-columns: repeat(auto-fit,minmax(16rem, 1fr)); }
 .gridCols6 {  grid-template-columns: repeat(auto-fit,minmax(18rem, 1fr)); }
 .gridCols5 {  grid-template-columns: repeat(auto-fit,minmax(20rem, 1fr)); }
 .gridCols4 {  grid-template-columns: repeat(auto-fit,minmax(25rem, 1fr)); }
 .gridCols3 {  grid-template-columns: repeat(auto-fit,minmax(33rem, 1fr)); }
 .gridCols2 {  grid-template-columns: repeat(auto-fit,minmax(40rem, 1fr)); }
/* */

 main > fieldset { border: 1px solid black; }
 .fontInfo {
   white-space: pre-wrap; 
   font-family: monospace;
 }
 h3 {
   background-color: lightgreen; text-align: center;
   font-size: 1.2rem; cursor: pointer;
   margin: 0; padding: 0; 
 }
 article { margin-top: 0; display: block; }

/* Following from: https://stackoverflow.com/questions/1713048/how-to-style-dt-and-dd-so-they-are-on-the-same-line */
/* Comment out following for entirely different display */
dl.singleLines {
   display: grid;
   grid-template-columns: max-content auto;
  }
  dl.singleLines>dt { grid-column-start: 1; }
  dl.singleLines>dd { grid-column-start: 2; }
<main class="gridCols4">
  <fieldset>
    <legend> Normal </legend>
    <article>
      <h3>DL/DT/DD Display</h3>
    </article>
    <dl>
      <dt>Mercury</dt>
      <dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
      <dt>Venus</dt>
      <dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
      <dt>Earth</dt>
      <dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
    </dl>
  </fieldset>

  <fieldset>
    <legend> Modified </legend>
    <article>
      <h3>DL/DT/DD Display</h3>
    </article>
    <dl class="singleLines">
      <dt>Mercury</dt>
      <dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
      <dt>Venus</dt>
      <dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
      <dt>Earth</dt>
      <dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
    </dl>
  </fieldset>

</main>
James
  • 834
  • 7
  • 27
  • 1
    Perfect. You answered what I was missing with the dl.singleLines, etc. definitions I can now demonstrate the difference between the two dl/dt/dd setups with a display. – jmrker Dec 31 '21 at 05:04