Hey there, I'm looking to use different CSS fonts on Windows and Mac for the same page on a web application. Can someone please guide me on how to accomplish this?

In order to tailor the font based on the operating system, the following criteria should be followed:

For Windows: "Segoe UI" For Mac: "SF Pro"

Attempts have been made using the code provided below, but it seems to load before the DOM and lacks persistence.

      if (navigator.appVersion.indexOf("Win")!=-1) 
            {
                document.body.style.background = "green"; 
            }

Answer №1

To customize the font based on the operating system, you can use JavaScript to set the user agent value in the data attribute of the HTML tag and then apply specific fonts using CSS attribute selectors. Here is an example:

document.documentElement.setAttribute('data-useragent', navigator.userAgent);
html[data-useragent*='Mac OS X'] {
  font-family: 'SF Pro', sans-serif;
}

html[data-useragent*='Win'] {
  font-family: 'Segoe UI', sans-serif;
  font-weight: 800; 
}
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Placeat, corrupti! Dolore, repellat quo modi minus, aliquid mollitia amet suscipit ipsam quisquam esse, inventore quod tempore consequatur sint! Sapiente saepe quidem omnis, voluptatibus, cumque impedit maiores iste culpa asperiores accusamus assumenda temporibus minus adipisci porro odit ut reiciendis quia incidunt dolores!</p>

OS Specific Font - CSS Trics

Answer №2

implement it within a useEffect using an empty dependency array

useEffect(() => {
  // ... your unique code here
  if (navigator.appVersion.indexOf("Mac")!==-1) 
            {
                document.body.style.background = "blue"; 
            }
}, [])

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

Is there a way to randomly rearrange an array of objects when the page loads, then iterate over the rearranged array without triggering a console warning about "two children with the same key"?

When shuffling the array and mapping over it in my application, I am able to correctly display the shuffled data using translate3d for a slider effect. However, I keep receiving a growing list of console warnings: "Encountered two children with the s ...

Executing JavaScript code does not execute CSS code

Having some trouble with my Javascript and CSS. The script is functioning well, but when I use the filtering function, the CSS stops working and only the filtered results are displayed on the HTML page. Looking for advice on how to fix the Javascript. & ...

When a row is clicked, retrieve the data specific to that row

I have implemented a data-grid using react-table where I pass necessary props to a separate component for rendering the grid. My issue is that when I click on a particular row, I am unable to retrieve the information related to that row using getTrProps. ...

Why won't the code for detecting the DEL key in a textarea work on my computer?

I've been trying to detect when a user presses the Delete key and came across this helpful tutorial here The code worked flawlessly on jsfiddle.net, you can check it out here- http://jsfiddle.net. However, when I copied the same code to my local comp ...

Retrieving information from the backend using JavaScript

Utilizing devexpress JS Charts requires data to be in the format: [{ category: 'Oceania', value: 35 },{ category: 'Europe', value: 728 }] To achieve this format, I convert a DataTable to JSON in my backend code after running queries b ...

Adaptive design that uses identical HTML for both desktop and mobile versions

I'm currently working on a project using Bootstrap 4 to create a responsive design, but I'm facing some challenges. I managed to achieve the desired layout on CodePen, but I'm struggling to find a way to avoid repeating the code for both de ...

Looking to utilize HTML and AngularJS to locally upload a file?

I am facing an issue with my HTML page that is designed to upload files. I need to store the uploaded file locally using AngularJS, but despite trying various solutions, I have not been successful so far. Below is a snippet of my HTML code: <body> ...

Searching for a method to retrieve information from an API using jQuery in Node.js?

I'm currently working on fetching data from an api to display on the front-end. This is my server-side code - app.get('/chats',function(req,res){ User.find({}).exec(function(err,user){ res.send(user); }); }); On the clie ...

Creating an oval cutout shape using CSS in a div element

I am currently facing some challenges creating the design depicted in the image above, particularly with the oval shape. Let me provide an explanation: The menu bar is designed as a div with a subtle linear gradient that transitions from dark grey to a l ...

What is the best method for retrieving logs from one Cloud Function to another?

I am attempting to access and review the logs produced by my cloud functions. After reviewing the Firebase Documentation, I discovered a CLI command that allows us to accomplish this task: firebase functions:log This particular command displays all of the ...

Avoiding the Popover Component from Covering the Screen When the Menu Component Opens in React Material UI

I have implemented a Menu component to display a menu upon hovering over an element. However, I have encountered an issue where the menu includes a Popover component that opens up and covers the entire screen as an overlay, preventing interaction with th ...

Issue with npm during installation of REACT - not functioning as expected

After executing all the necessary commands on the command line, including globally installing npm with npm install -g create-react-app, as well as running npx create-react-app <myprojectname> and clearing the npm cache, I consistently encountered an ...

Display the code exactly as it appears

Important Note: I have to insert the following code three times in the HTML body of a static webpage. Instead of repeating it multiple times and cluttering the code, I prefer to have a single line (repeated three times) that calls the function to output th ...

Save a document to the file system and retrieve it using Express

Can res.download() be used after writing a file to the filesystem? router.get('/exportjson', (req, res, next) => { let json = `{"@dope":[{"set":"","val":"200"}],"comment":"comment","folderType":"window"}` const file = `${__dirname}/upload-f ...

Oops! The Route post function is missing some necessary callback functions, resulting in an undefined object error

I need to verify if a user has admin privileges. Every time I try calling the verifyAdminUser function from my router, I encounter the following error: Error: Route.post() requires callback functions but got a [object Undefined] at Route.(anonymous func ...

Utilizing the state object within the useLocation() hook of ReactRouterDom in a NextJS environment

One feature of React router dom is the state object available in useLocation() const { state } = useLocation() I'm curious about how I can access a similar object in NextJS. Can anyone help with this? ...

Concealing and wrapping text using CSS in a table structure

My table is displayed below: <table style="width: 100%; white-space: nowrap; overflow: hidden;"> <tbody><tr> <th> Department </th> <th> Function </th> ...

Stopping Angular Route Alteration Depending on Routing Conditions

I have been searching everywhere for a solution to this issue. My goal is to be able to access the routing parameters collection and prevent the route from loading if a certain parameter is missing. I have tried using preventDefault in $routeChangeStart, b ...

Storing form information within the view

What is the best way to transfer data between views in AngularJS? I tried using $rootScope but it's not working as expected. ...

Tips for managing errors when using .listen() in Express with Typescript

Currently in the process of transitioning my project to use Typescript. Previously, my code for launching Express in Node looked like this: server.listen(port, (error) => { if (error) throw error; console.info(`Ready on port ${port}`); }); However ...