Reduce / condense text that is overflowing

Take a look at the image I've attached. The text is overflowing outside the div, and I want to collapse it with a "Read more" link at the end. Users should be able to click on the "Read more" link to expand the text.

I'm currently working on a project using Next.js.

Check out the screenshot of the div here

My requirement is to collapse the text to a specified number of lines without breaking the text.

Answer №1

To implement a Card component, use the code below:

const Card = () => {
  const [expand, setExpand] = useState(false);
  
  return (
    <div>
      <div className={`${style.collapsible_text} ${expanded ? '' : style.collapsed}`}>
        {/* Card content here */}
      </div>
      <p onClick={() => setExpand(!expand)}>{expand? "show less" : "show more"</p>
    </div>
  );
}

Next, add the following CSS styles to the Card component:

.collapsible_text {
  max-height: 50px;
  overflow: hidden;
}

.collapsed {
  max-height: 50px;
}

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What are the best methods for utilizing scrollbars to navigate a virtual canvas?

I am interested in developing a unique jQuery plugin that can simulate a virtual HTML5 Canvas, where the canvas is not physically larger than its appearance on the page. However, the content intended for display on the canvas may be much larger and will ne ...

Struggling to implement CSS variables across different browsers

I'm struggling to make CSS variables function properly, here is what I have so far: :root { --primary-color: #ffcd600; --spacing: 10px; --blur: 10px; } img { padding: var(--spacing); background: var(--primary-color); } When I check the el ...

Unusual behavior exhibited by ng-if within a widget

Hey there, seeking some assistance here. I'm currently making edits to a widget and within the client HTML code, I've come across two ng-if statements (the first one was already there, I added the second). <li> <a ng-if="data.closed ...

Could a complex, intricate clipping path be created using CSS 3?

Here is an example: Can this be achieved using only CSS? I wish to create two divs: A circle without any background or border. A div with a background. I aim to have point 1 clip the background from point 2. This will allow me to rotate the backgroun ...

Stopping an Ajax Request in RichFaces

Having trouble canceling an Ajax Request in our RF-built application interface. The progress bar modal should have a cancel button to interrupt the current operation, such as cancelling filling controls from the database. How can this be achieved? I&apos ...

Issue with the read more button inoperative for two specific paragraphs

Upon trying to implement 2 or more "Read More" buttons on my website for users to view snippets of content before downloading, I encountered an issue with the functionality only working on the first paragraph and not the subsequent ones. Despite ...

Using JavaFX to modify the cursor in a Textarea

I have a Textarea that I utilize for displaying status logs. To prevent the user from entering text, I have set editable to false. However, I am having trouble getting the cursor to display as the standard arrow cursor. My attempt to change the cursor of ...

How to align Material UI's <TextField> component in the middle of a React project

I'm struggling to align two <TextArea> components using material ui and React. Both of them are contained within the same <div> and share the same className. Despite trying to apply the !important rule in CSS, I haven't been able to ...

Utilizing JavaScript to retrieve input names from arrays

This is the HTML form that I am currently working with: <form action="#" method="post"> <table> <tr> <td><label>Product:<label> <input type="text" /></td> <td><label>Price:<label> ...

What is the best way to display a poster image in a video element even if the aspect ratio of the poster image does not match the video element?

At this moment, the compatibility of this feature has been tested only in WebKit browsers. When a poster image is applied to a <video> element using the poster attribute, it appears before the user starts playing the video (default behavior). Howeve ...

What is the best way to convert my Chatbot component into a <script> tag for seamless integration into any website using React.js?

I have successfully integrated a Chatbot component into my Next.js application. https://i.stack.imgur.com/BxgWV.png Now, I want to make this component available for anyone to use on their own website by simply adding a tag. My initial approach was to cre ...

Is there a way to output base variables in Gurobi using Java?

I need to output a 1 if the variable is a base variable, otherwise output a 0. I attempted this code but it's not working as expected: for(GRBVar var : model.getVars()){ double v = var.get(DoubleAttr.RC); if(v == 0) System.ou ...

Develop rounded edges for a div element

I am interested in developing an HTML-based chart similar to the one shown below, but I am unsure of the steps to take. https://i.sstatic.net/2jLPO.png ...

Renew the Look of Dynamic HTML with Updated Styles

In the middle of my website, there is a console that contains links to dynamically update its content using javascript. Everything works smoothly, but the new HTML added dynamically does not have any styling applied to it. Is there a way to refresh the CS ...

Tips for effective page management

After creating a navbar in my project, I've come to the realization that it requires a component for each page and subpage. This seems redundant especially when dealing with multiple navigation options like shown in this image. Is it necessary to crea ...

Ensure that the assistant stays beneath the cursor while moving it

I am currently working on creating a functionality similar to the 'Sortable Widget', but due to some constraints, I cannot use the premade widget. Instead, I am trying to replicate its features using draggable and droppable elements: $(".Element ...

Tips for identifying the existence of an element using Selenium WebDriver in Java

When attempting to use Selenium WebDriver's findElement() function to check for the presence of an element on a page, I encounter issues where Selenium exits the code even when handling exceptions with WebDriverException. Although I tried implementin ...

What is the most efficient way to send multiple arrays by selecting checkboxes?

Currently, I am faced with a challenge where I have a selection of items from a list that need to be submitted in the form of three different arrays with distinct values to PHP. These arrays include: Device id, Client comment, and Manufacturer comment. < ...

I cannot seem to alter the background color of my image through the use of external CSS

body { background-color: #f6f7d4; } h1, h3, hr { color: #68b8ab; } hr { width: 100px; border-style: dotted none none; border-color: gray; border-width: 5px; } img { background-color: black; } Although the external CSS code a ...

Using line breaks and horizontal scrolling in HTML and CSS

I am struggling with a div that contains multiple small spans. My goal is to implement a horizontal scrollbar that extends up until the line break tags (a-z on each line) in order to view the full content on narrow screens. Although I have applied the &ap ...