Is it possible to create two distinct homepages for a single website?

I'm currently working on a project where I am creating a replica of the website Make My Trip

This website has different layouts for laptop and mobile devices, appearing completely different. How can we achieve this kind of functionality?

Here is the view in a Laptop

Same website viewed on Mobile

Answer №1

There are several factors at play that influence the best approach, including whether a server-side language like PHP is being used and how unique each page is.

Determining if a site is running on a mobile device can be tricky.

A possible solution:

  1. Create a centralized index page that employs JavaScript to detect screen dimensions and utilizes AJAX to load the appropriate mobile or desktop version of the page.

  2. Include a button or link on the page that allows users to easily switch between mobile and desktop views and save their preference using cookies or sessions.

Alternatively,

One approach I've observed is to always default to serving the mobile version of a site, while giving users the option to switch to desktop mode. This strategy assumes that more visitors access the site via mobile devices and prioritizes their experience over that of desktop users, who may tolerate larger pages better than mobile users would appreciate smaller ones.

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

Using Partials in Node.js with Express and Hogan.js

I am currently in the process of building a website using Node.js + Express and utilizing Hogan.js as the view engine. Here is a snippet from my file app.js: // Dependencies var express = require('express') , routes = require('./routes&a ...

Enhancing functionality in Javascript by employing prototype descriptor for adding methods

Code: Sorter.prototype.init_bubblesort = function(){ console.log(this.rect_array); this.end = this.rect_array.length; this.bubblesort(); } Sorter.prototype.init = function(array,sort_type){ this.rect_array = array; this.init_bubblesort(); } Wh ...

When you tap on the child element, ignore the parent element

Is there a way to make CSS understand that clicking on a child element within the parent should not be considered as clicking on the parent as well? Why not give it a try by clicking on one of the children inside the parent? .parent{ background: b ...

When handling a document click event in Typescript, an error may occur where it cannot read

Just starting out with Typescript and diving into Angular, I am currently in the process of converting my project to the Angular system. However, I've hit a roadblock. I need to figure out how to close the dropdown content when the user clicks anywher ...

concealing elements using negative margins on tablet devices

I have an animated element on the ipad, moving from -200px to 1500px and being hidden due to overflow-x:hidden in the browser. However, when viewing this on the ipad, I am able to scroll "off screen" and reveal the hidden items, despite setting the body a ...

Sort the Vue.js array by year and search for items by tag

In my VueJS project, I am working with data fetched from an API using axios. The data consists of projects with various properties such as year, location, and tags like house or park. I have implemented a filtering system to sort the projects based on a sp ...

The CSS file I've linked to in my HTML (ejs) document seems to be getting

As I work on developing my app from the backend, I am encountering an issue with loading CSS locally on my page. I am utilizing Node.js, Express.js, and EJS for my pages - part of the MEN/MEAN stack. <link href="../public/stylesheets/style.css" rel="st ...

Changing the CSS property of a single table cell's innerHTML

I have a question that may seem silly, but I'm going to ask it anyway. Currently, I am iterating through a list of strings that follow the format "1H 20MIN" and adding them to table cells using the innerHTML property like so: for (i = 0; i < list ...

What is the best way to simulate axios API calls in Jest for mocking purposes?

I am currently testing a Vuex action async function that calls an API using axios. However, I am facing an issue where I am getting an error message that says: "TypeError: Cannot destructure property data of 'undefined' or 'null'." 3 ...

Tips for adjusting the position of nodes that are overlapping in React Flow

Whenever node1 is moved over node2 in react-flow, they end up overlapping. I am looking to shift node2 towards the right to avoid this overlap. The desired outcome is for node2 to be shifted to the right side. ...

Utilizing PHP to make an Ajax call to interact with a MySQL database

My objective is to utilize AJAX for invoking my PHP function: function getAns($mysqli) { $stmt = $mysqli->prepare(' SELECT `user_id`,`user_name`, `user_ans` FROM `tbl_user` WHERE `user_ans` != ""'); $stmt->execute(); ...

When working with JSON in Angular, the JSON pipe may display an empty string for values that are "undefined"

When utilizing the json pipe within Angular, it displays a blank for any undefined values. <pre>{{undefined | json}}</pre> The output on the DOM is as follows: <pre></pre> This behavior differs from the JSON stringify function. ...

The components for my children are not being displayed within the Drawer component in Material UI and React

Why are the Material UI components and other project components not displayed when I use my DrawerForm component? List of dependencies: react: 18.2.0 react-dom: 18.2.0 @amcharts/amcharts5: 5.3.6 @mui/icons-material: 5.11.11 @mui/material: 5.11.12 Code s ...

I am seeking to enable a specific div when the crawler condition is met

This specific div houses the character and becomes active when the character is clicked. Upon clicking, a jQuery function is triggered to display other countries. //this particular div should remain active when the crawler condition is met. It displays th ...

Exploring the concept of JavaScript Variablesqueries

I need help understanding why the results are different in these three examples related to JavaScript. Case 1. var x = 5 + 2 + 3; document.getElementById("demo").innerHTML = x; Result: 10 Case 2. var x = 5 + 2 + "3"; document.getElementById("demo").in ...

The reasons why script tags pointing to "localhost:3000" become unsuccessful

Currently in the process of revamping my company's web services, we are separating our static web files (HTML, CSS, JS) from our authentication server and API service. To maintain backward compatibility during our migration plan, we need to keep the o ...

The style properties of Material UI ButtonGroup are not being properly applied

https://i.sstatic.net/apxUH.gif Within a Grid container, I have a Product image with associated buttons. The visibility of these buttons is determined by specific state variables. If the product quantity is 0, an "ADD TO CART" button is displayed; otherwi ...

Transform every URL within the class.phpmailer.php file

After spending 3 weeks searching, I finally stumbled upon these amazing answers >>> How to turn plain URLs into clickable links? However, I am unsure of how to implement this with phpmailer.. I have been utilizing an html form to send informatio ...

Unexpected syntax error encountered when shutting down the route, unable to recover

const express = require('express'); const app = express(); const bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.get('/split/name', (req, res) => ...

Learn how to use ng-include with Angular Meteor in this comprehensive tutorial

Having embarked on my first Angular Meteor tutorial, specifically the socially tutorial, I reached the conclusion of the Bootstrapping section only to faced with a blank page upon running it. The current structure of my files is as follows: ~/socially$ ...